在IE中使用location.replace()时避免缓存

时间:2014-07-16 09:19:46

标签: internet-explorer caching web cache-control

在我正在处理的应用程序的登录过程中,有一个提交用户名和密码的POST表单。处理完登录后,通过调用location.replace()来清除URL以从浏览器历史记录中删除帖子页。

这意味着如果用户在登录后点击F5,它只会重新加载默认页面,而不是尝试重新提交登录凭据。但我在IE中遇到问题,当开发工具未打开时,替换无法正常工作。

通过打开开发人员工具并启动网络跟踪,然后再次关闭它,我可以看到问题所在。 location.replace()的URL显示在跟踪中,状态显示为“304 Not Modified”,过期时间为1天。我可以从Apache日志中看到请求没有发送到服务器,并且页面总是输出有适当的标头来禁用缓存。

它在其他浏览器中运行良好,在IE中如果开发人员工具当时打开(!)但我无法弄清楚如何在IE中停止缓存,除了通过uglifying URL。

有关信息,我试图摆脱URL末尾的丑陋?c=1405502309参数时创建了这个问题,我知道我可以通过放回去修复它!但我真正想要的是不必,只是让IE服从无缓存标头。

1 个答案:

答案 0 :(得分:0)

一天只有6次观看?

我想我最终找到了将no-store添加到缓存标头的解决方案,如下所述:Why both no-cache and no-store should be used in HTTP response?

我仍然不明白为什么需要这样做:location.replace()绝对不是浏览器历史机制的一部分......