【发布时间】:2012-02-26 04:12:40
【问题描述】:
我正在调试 HTTP 301 永久重定向的问题。经过快速测试,Safari似乎在重新启动时清除了301s的缓存,但Firefox没有。
IE、Chrome、Firefox 和 Safari 什么时候清除它们的 301 缓存?
UPDATE:例如,如果我想将example1.com重定向到example2.com,但我不小心将它设置为重定向到example3.com,那就有问题了。我可以纠正这个错误,但在此期间访问过example1.com 的任何人都会缓存到example3.com 的不正确重定向,因此他们将无法访问example1.com 或example2.com,直到他们的缓存被清除.经过调查,我发现没有设置 Cache-Control 和 Expires 标头。不正确的 301 响应的标头应该是这样的:
HTTP/1.1 301 Moved Permanently
Date: Wed, 27 Feb 2013 12:05:53 GMT
Server: Apache/2.2.21 (Unix) DAV/2 PHP/5.3.8
X-Powered-By: PHP/5.3.8
Location: http://example3.com/
Content-Type: text/html
我自己的测试表明:
- IE7、IE8、Android 2.3.4 根本不缓存。
- Firefox 18.0.2、Safari 5.1.7(在 Windows 7 上)和 Opera 12.14 所有缓存,并在浏览器重启时清除缓存。
- IE10 和 Chrome 25 缓存,但在浏览器重启时不清除,什么时候清除?
【问题讨论】:
-
请告诉 chrome 我们需要一条摆脱这个 301 地狱洞的方法:bugs.chromium.org/p/chromium/issues/…
-
@BT 因为这个问题会影响所有浏览器,实际上只有 IETF 可以解决这个问题,可能通过在没有 TTL 的缓存 301 上定义一些强制超时,以便浏览器最终重新验证他们缓存的假设.
-
我开始在 IETF 邮件列表上讨论这个问题,如果仍然关注这个问题的任何人都想参与进来:lists.w3.org/Archives/Public/ietf-http-wg/2017OctDec/0363.html