我正在自动化一个Web应用程序(Mantis错误跟踪器),并且从中得到一个有趣的响应头,称为Refresh:
HTTP/1.x 200 OK
...
Refresh: 0;url=my_view_page.php
它的行为方式似乎与元刷新相同,并且元刷新技术意味着它等效于HTTP中的标头。
问题是,我找不到HTTP标准中的Refresh标头,也找不到任何其他有关如何解析标头以及浏览器遇到该标头时应该做什么的权威性文档。
这里发生了什么?
Answers:
据我所知,Refresh(连同Set-Cookie以及其他专有伪头文件)是由Netscape在互联网成立之初创建的,从那时起基本上(但还不是很标准)成为标准。因为几乎每个浏览器都支持它,所以Refresh使用起来非常安全-通常是这样。
我猜它从来没有成为官方标准的一部分,因为他们已经在状态代码中对此进行了规定。
Refresh
来确认标头,并且据Wikipedia所述,IE,Firefox,Chrome(和Safari)以及Opera均支持该标头。
Redirect
header /时发生的情况<meta>
。我的主要观点是,您拒绝了出于所有实际目的而被拒绝的帖子;如果您希望更改它,最好弄脏双手而不是投票。
Refresh
标头(字段)。它们而是引用HTMLmeta
元素(旨在等同于此类标头字段)。(Redirect
与您认为的有所不同。)我认为,Chromium 32显然支持这样的HTTP标头字段(因此,其他浏览器也可能这样做),但这不是问题。IOW,到目前为止的答案还没有解决这个问题。特别是,这个答案没有。它应该被否决。
从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。
根据维基百科:URL重定向:
这是Netscape的专有/非标准扩展。大多数网络浏览器都支持它。
我相信它最初是Netscape扩展,由于W3C不推荐使用,因此未标准化:
HTML的“刷新” HTTP响应标头已经标准化(无论如何对于Web浏览器):
该URL看起来不太稳定,因此以下是截至2019-12-03的相关步骤:
- 如果响应具有
Refresh
标头,则:
- 令value为标头值的同构解码。
- 使用document和value运行共享的声明式刷新步骤。
Refresh
可能使用302响应来发送标头字段。