【问题标题】:IE 302 Redirect No-Cache Header ProblemIE 302 重定向无缓存标头问题
【发布时间】:2010-09-28 17:22:35
【问题描述】:

发布信息后返回 302 重定向。此重定向旨在重新加载当前页面。

这一切都很好,但是 IE 在标题中添加了 No-Cache:

Cache-Control: no-cache

我们正在使用 Squid 来缓存我们的内容,并将其放在标题中绕过 squid。
由于这种重定向经常被使用(没有办法解决这个问题),这会大大增加我们系统的负载。

Firefox 没有这个问题,它只是请求重定向的页面而不更改标题,这正是我们想要的。

我们可以做些什么来阻止 IE 添加无缓存?

【问题讨论】:

  • 这种情况会发生在非开发机器上吗?
  • 是的,这是在生产环境中

标签: internet-explorer caching redirect http-status-code-302


【解决方案1】:

令人着迷。这确实是一个没有直接解决方法的 IE 问题。问题是 IE 将无条件地将 Cache-Control: no-cache 请求标头(或 Pragma: no-cache 请求标头,如果您有代理)添加到 HTTP POST 请求。

这无疑是十多年前在 IE 中引入的,以适应有缺陷的代理服务器,这些代理服务器不能正确处理 HTTP POST 请求并会错误地返回缓存的响应。

IE 的一个怪癖是,当您重定向时,无缓存标头会重新添加到重定向的请求中。因此,在您的情况下,您的重定向请求还会发送从 POST 请求中携带的“无缓存”请求标头。

不幸的是,没有直接的解决方法。您可以将 IE 用户重定向到使用 JavaScript 将他们重定向回原始页面的插页式页面。 (但不要使用 META REFRESH,因为它总是发送无缓存请求)。

【讨论】:

    【解决方案2】:

    对我来说,这听起来像是 IE 中的一个错误。 This discussion 听起来很相似。您可以尝试发回 301 或 307 响应,看看它的响应是否不同。

    【讨论】:

    • 那个链接只是把我带到了 Windows 体验图像......没有讨论。
    猜你喜欢
    • 2014-01-09
    • 1970-01-01
    • 2014-04-25
    • 2012-04-23
    • 1970-01-01
    • 2012-12-21
    • 2021-12-22
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多