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

Redirect 302重定向在浏览器中保存多长时间?,redirect,browser,browser-cache,cache-control,http-status-code-302,Redirect,Browser,Browser Cache,Cache Control,Http Status Code 302,由于我们的Web服务器配置错误,主域向新位置发送了302重定向。我们解决了这个问题。清空浏览器缓存时,现在一切正常 对于不清空缓存的“普通”客户端:302重定向在浏览器中保留多长时间 我在默认设置下查找每个主要浏览器(Chrome、Firefox、Safari、Opera、Edge、IE 12)的特定缓存时间。这取决于各个客户端的浏览器缓存设置:IE有一个选项“从不”检查新页面,它对重定向具有相同的效果。 AFAIR IE的“自动”设置(默认值?)也没有太大的改进。它根本不应该被缓存,除非web

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

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


我在默认设置下查找每个主要浏览器(Chrome、Firefox、Safari、Opera、Edge、IE 12)的特定缓存时间。

这取决于各个客户端的浏览器缓存设置:IE有一个选项“从不”检查新页面,它对重定向具有相同的效果。

AFAIR IE的“自动”设置(默认值?)也没有太大的改进。

它根本不应该被缓存,除非web服务器返回
缓存控件或
过期
头。据

请求的资源临时驻留在不同的URI下。由于重定向有时可能会被更改,因此客户端应该继续使用请求URI来处理将来的请求。只有在缓存控件或Expires标头字段指示时,此响应才可缓存


Jon Lin在此引用的标准使用了RFC术语中的“应”。这不仅仅是理论上的分歧;例如,Cloudflare:

如果未提供缓存标头(无缓存控制或过期),则 url是可缓存的(.jpg、.css、.js等),然后CloudFlare将两者都缓存 301和302s。我们缓存301几个小时,缓存302个小时 较短的时间(约20分钟)


因此,您应该确保能够处理它,或者使用显式标题(例如,
缓存控制:private,no Cache
)来指导浏览器和中间用户对其进行缓存。

Firefox

不应该使用Steve Sounder的(谢谢@LeonidVasilev)缓存它,结果可能不是预期的结果。如果没有expires标头或Cookie,结果如下:

Chrome 71:未缓存✔
Firefox 64:缓存✕
Safari 12:缓存✕

因此,不管状态如何,并不是所有浏览器都遵循这些准则,也不是所有浏览器都遵循预期的行为:(

添加

Cache-Control: no-store
响应的头,它将不会被缓存。截至2020年7月20日,所有主流浏览器都尊重这一点

但是要注意中间缓存(代理/CDN):如果中间缓存的最小TTL为非零,则无论您做什么,您的响应都将被缓存。请参阅示例:


表的最后一行(Origin添加了缓存控制:无缓存、无存储和/或对象的私有指令)。在这种情况下,防止缓存的唯一方法是将TTL设置为0(当然还要添加
缓存控制:无存储
标题)。

谢谢。看起来我的默认测试浏览器(Chrome)刚刚愚弄了我:(Chrome缓存,其他不可用)@OleAlbers我正要用便条编辑我的答案(在我的互联网死掉之前)虽然RFC说客户端应该继续使用原始URI,但这并不意味着所有浏览器都会这样做,而是需要根据具体情况进行处理。是的,这是我的问题-没有指定
缓存控制
导致缓存重定向。可以查看此线程以更全面地了解不过,不指定缓存头:SteveSouders的文章包含一个指向相关web测试的链接。