浏览器中保存302重定向多长时间?

Ole*_*ers 25 browser redirect browser-cache http-status-code-302

由于我们的网络服务器配置错误,主域名将302重定向发送到新位置.我们解决了这个问题.清空浏览器缓存时,一切正常.

对于没有清空缓存的"普通"客户端:302重定向在浏览器中保留多长时间?

我正在寻找默认设置下每个主要浏览器(Chrome,Firefox,Safari,Opera,Edge,IE 12)的特定缓存时间(如果有的话).

Jon*_*Lin 28

除非Web服务器还返回一个Cache-ControlExpires标头,否则不应该缓存它.根据RFC 2616,第10.3.3节302找到

请求的资源暂时驻留在不同的URI下.由于重定向有时可能会被更改,因此客户端应该继续使用Request-URI来处理将来的请求.如果由Cache-Control或Expires头字段指示,则此响应仅可缓存.

  • @OleAlbers我打算用笔记编辑我的答案(在我的网络死亡之前)虽然RFC说客户**应该继续使用原始URI,但这并不意味着所有的浏览器都会,它会需要视具体情况而定. (3认同)
  • 谢谢.看起来我的默认测试浏览器(Chrome)只是骗了我这个:http://code.google.com/p/chromium/issues/detail?id = 103458(Chrome缓存,其他人没有) (2认同)

mah*_*off 13

Jon Lin在这里引用的标准使用了"SHOULD",它在RFC术语中没有"MUST"那么强.这不仅仅是理论上的干扰; 例如,Cloudflare 缓存重定向:

如果没有提供缓存头(没有Cache-Control或Expires)并且url是可缓存的(.jpg,.css,.js等),则CloudFlare会缓存301和302s.我们在短时间内(约20分钟)缓存301几小时和302秒.

因此,您应该确保可以处理它或使用显式标头(例如Cache-Control: private, no-cache)来指导浏览器和中间件来缓存它.


Chu*_*utt 9

使用 Steve Sounder 的Redirect Caching Tests 工具(感谢 @LeonidVasilev),结果似乎可能不是预期的。没有过期标头或 cookie,结果如下:

Chrome 71:未缓存?
Firefox 64:缓存?
Safari 12:缓存?

因此,尽管RFC 2616, section 10.3.3 302 Found指出,并非所有浏览器都遵循这些准则或可能被视为预期行为的内容:(