'刷新'HTTP标头

eli*_*ner 63 http http-headers

我正在自动化一个Web应用程序(Mantis bug跟踪器),我从中得到一个有趣的响应头,名为Refresh:

HTTP/1.x 200 OK
...
Refresh: 0;url=my_view_page.php
Run Code Online (Sandbox Code Playgroud)

它似乎与元刷新的行为方式相同,元刷新技术暗示它与HTTP中的标头等效.

问题是,我找不到HTTP标准中的Refresh标题或任何其他关于如何解析它以及浏览器在遇到它时应该做什么的权威文档.

这里发生了什么?

Ali*_*air 57

据我所知,刷新(连同Set-Cookie和可能的其他专有伪标题)是由Netscape在互联网的早期创建的,从那时起基本上(但不是很)标准.因为几乎每个浏览器都支持它,所以刷新使用起来非常安全 - 通常是.

我想它从未成为官方标准的一部分,因为它们已经有了状态代码的规定.

  • 是的.它的创建是为了支持"客户端拉动",回到Netscape 1.1天,当时"客户端拉动"和"服务器推送"是超级新的流行语,并且添加了随机呕吐破碎的"HTML扩展",这是积极的要求.IE-haters:微软在Netscape上什么也没有... (13认同)
  • @PointedEars,这个答案是5岁,作者是去年最后一次见到的.相当大胆,期待它改变.然而,在此之前,W3C通过"META刷新"称谓[刷新]标题[http://www.w3.org/TR/WCAG20-TECHS/H76],根据维基百科,[ IE,Firefox,Chrome(和Safari)和Opera都支持它(http://en.wikipedia.org/wiki/Meta_refresh#Usability). (7认同)
  • @PointedEars,请注意,您链接的页面上引用的原因是“它破坏了后退按钮”,而不是“它不起作用”。它甚至描述了当您使用 `Redirect` 标头/`<meta>` 时*会发生什么*。我的观点主要是你对一个出于所有实际目的而被否定的帖子投了反对票;如果你想改变它,你最好弄脏你的手而不是投票。 (2认同)

Lok*_*oki 18

来自W3C HTML 4.01规范,引用:

META和HTTP标头

可以使用http-equiv属性代替name属性,并且在通过超文本传输​​协议(HTTP)检索文档时具有特殊意义.HTTP服务器可以使用http-equiv属性指定的属性名称在HTTP响应中创建[RFC822]样式的标头.有关有效HTTP标头的详细信息,请参阅HTTP规范([RFC2616]).

这意味着当你使用<meta http-equiv="refresh" url="..."/>标签时,你实际上是指示浏览器表现得好像有一个Refresh标题被发送.

可以在http://www.securiteam.com/securityreviews/6Z00320HFQ.html找到它的历史的一个很好的概述.

  • 我知道http-equiv与发送HTTP头相同.我想知道的是HTTP Refresh标头的来源以及记录的位置. (8认同)

Gre*_*reg 12

根据维基百科:URL重定向:

这是Netscape的专有/非标准扩展.大多数Web浏览器都支持它.


小智 6

“刷新”HTTP 响应标头已在 HTML 中标准化(对于 Web 浏览器来说):

https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigating-across-documents%3Ashared-declarative-refresh-steps

该 URL 看起来不太稳定,因此以下是截至 2019 年 12 月 3 日的相关步骤:

  1. 如果响应Refresh标头,则:
    1. value为标头值的同构解码。
    2. 使用documentvalue运行共享声明性刷新步骤。


Aln*_*tak 5

我相信它最初是一个Netscape扩展,并没有标准化,因为它被W3C弃用:

http://www.w3.org/TR/WCAG10-HTML-TECHS/#meta-element