“刷新” HTTP标头


69

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

HTTP/1.x 200 OK
...
Refresh: 0;url=my_view_page.php

它的行为方式似乎与元刷新相同,并且元刷新技术意味着它等效于HTTP中的标头。

问题是,我找不到HTTP标准中的Refresh标头,也找不到任何其他有关如何解析标头以及浏览器遇到该标头时应该做什么的权威性文档。

这里发生了什么?


3
我想知道的是,为什么脚本Refresh可能使用302响应来发送标头字段。
克里斯·杰斯特·杨

我不知道,Mantis就是这么做的,可能是当它在ASP.NET上的PHP上运行时,这是我的客户所拥有的一种奇怪的组合。
elifiner

注意:出于性能原因,应避免使用此标头。见blogs.msdn.com/b/ieinternals/archive/2010/05/13/...
EricLaw

2
@EricLaw较小的更正:如果使用刷新标头或延迟为0的meta标签,则出于您指定的原因,几乎应该始终使用301或302重定向;但是,在某些罕见的情况下,使用此选项确实有意义,例如存在非零延迟并且在页面上显示了有意义的内容(例如,在返回到页面之前向用户显示成功或错误消息)形式)。
Michael Aaron Safyan

当用户单击非FB链接时,连Facebook也使用它。看起来确实很烦人,因为它也可以在刷新时消除哈希。
Nikhil Sahu

Answers:


61

据我所知,Refresh(连同Set-Cookie以及其他专有伪头文件)是由Netscape在互联网成立之初创建的,从那时起基本上(但还不是很标准)成为标准。因为几乎每个浏览器都支持它,所以Refresh使用起来非常安全-通常是这样。

我猜它从来没有成为官方标准的一部分,因为他们已经在状态代码中对此进行了规定。


13
是的 它是为了支持“客户端拉动”而创建的,这是在Netscape 1.1天内(当时“客户端拉动”和“服务器推送”成为超级骗子),人们强烈要求添加随机呕吐的“ HTML扩展”。IE仇恨者:微软在Netscape上一无所有...
bobince

7
@PointedEars,此答案是5岁,并且作者是在去年失踪的。在您的一端相当大胆,期望它会改变。不过,在此之前,W3C会通过“ META刷新”称谓Refresh确认标头,并且据Wikipedia所述,IE,Firefox,Chrome(和Safari)以及Opera均支持该标头
zneak

@zneak只要语句没有根据,这些语句的年龄有多大都没有关系。我认为指出它们是没有根据的,对我来说不是大胆的。关于“ W3C的认可”,您引用了工作组说明。确实,W3C通常会有所不同。Opera支持此功能的功能已经有一段时间了,用户可以在“首选项”对话框中禁用它。
PointedEars

2
@PointedEars,请注意,您链接的页面上引用的原因是“它破坏了后退按钮”,而不是“它不起作用”。它甚至描述使用Redirectheader /时发生的情况<meta>。我的主要观点是,您拒绝了出于所有实际目的而被拒绝的帖子;如果您希望更改它,最好弄脏双手而不是投票。
zneak

@zneak您感到困惑,错过了重点。您引用的工作组说明和我引用的QA提示都没有引用HTTP Refresh标头(字段)。它们而是引用HTMLmeta元素(旨在等同于此类标头字段)。(Redirect与您认为的有所不同。)我认为,Chromium 32显然支持这样的HTTP标头字段(因此,其他浏览器也可能这样做),但这不是问题。IOW,到目前为止的答案还没有解决这个问题。特别是,这个答案没有。它应该被否决。
PointedEars 2014年

19

从W3C HTML 4.01规范中引用:

META和HTTP标头

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

这意味着当您使用<meta http-equiv="refresh" url="..."/>标签时,实际上是在指示浏览器进行操作,就好像Refresh发送了标头一样。

有关其历史的完整概述,请访问http://www.securiteam.com/securityreviews/6Z00320HFQ.html。


9
我知道http-equiv与发送HTTP标头相同。我想知道的是HTTP Refresh标头来自何处以及在何处记录。
elifiner



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.