我在网站上有两页。最初/a
返回301重定向到/b
。我更改了网页,以便/b
现在返回301重定向到/a
(现在有内容而不是/b
)。我看到的行为是浏览器使301从/a
无效到/b
,并将其替换为从/b
到/a
的新301,从而阻止了重定向循环。
我想确认我在当前浏览器(Chrome,Firefox,IE和Edge)中看到的行为被理解为正确行为。我看过RFC 2616,但据我所知,它并没有覆盖这个角落的情况。任何人都可以确认这是规范所定义的行为,还是已经确立的先例(即浏览器多年来一直表现这种行为)?
有关详细信息,我正在处理的具体案例是主动将HTTPS重定向到HTTP的页面。我想反转这个以强制HTTPS。就我而言,/a
和/b
实际上是同一页面,只是通过不同的协议访问。
修改
RFC 2616的客户端应该检测无限重定向循环,因为这样的循环会为每次重定向生成网络流量。
我猜这是我所看到的缓存破坏行为的指导原则。关于行为是否符合规范,或者只是唯一有意义的事情,仍然不是一个可靠的答案。
修改2
RFC的另一个相关位(Section 13.12)
如果在缓存同一资源的任何现有响应时从资源收到新的可缓存(请参阅第14.9.2节,第13.2.5节,第13.2.6节和第13.8节)响应,则缓存应该使用新响应来回复对当前的要求。它可以将它插入到缓存存储器中,如果满足所有其他要求,可以使用它来响应以前导致旧响应返回的任何未来请求。如果它将新响应插入缓存存储,则应用第13.5.3节中的规则。
根据我发布的部分,似乎我看到的行为是规范建议的,如果没有完全拼写出来的话。
答案 0 :(得分:0)
Redirection 3xx section:语义和内容定义了这种行为。相关摘录:
客户应该检测并干预周期性重定向(即, "无限"重定向循环)。
注意:此规范的早期版本建议使用 最多五次重定向([RFC2068],第10.3节)。内容 开发人员需要意识到一些客户可能会实现这样的 固定的限制。