【问题标题】:How to force a browser to get new headers without declaring expires?如何在不声明过期的情况下强制浏览器获取新标头?
【发布时间】:2015-10-08 11:34:07
【问题描述】:

我们有一个已建立的站点,现在受 CSP 规则的影响。我已将我们需要的所有脚本添加到 Content-Security-Policy 标头中。

当使用隐私浏览或以前未访问过该网站的设备访问该网站时,我会获得新的 CSP 标头并且一切正常。

但是,之前访问过该网站的用户会获得旧的标头,并且会收到 CSP 警告。

NB我不能使用expire 0 或类似的浏览器不寻找新的标头,所以永远不知道标头已经过期。

我正在寻找一种方法来告诉浏览器“嘿,你应该检查一下我很酷的新标题,因为它们是新的”。

【问题讨论】:

  • 那么目前有客户端仍然有新的缓存吗?那么就没有办法从服务器端对他们强制执行任何操作,因为 他们根本不会在缓存过期之前询问服务器。 您可以告诉您的用户手动刷新(点击刷新通常在浏览器中执行两次,否则清除缓存),但除了等待之外,您可能无法自动执行此操作。
  • 奇怪的是,我无法通过硬刷新来复制它,甚至无法清除我自己在 Chrome 中的缓存。如果我打开一个隐身窗口它可以工作,但是如果我清除缓存并进行硬刷新,我仍然会遇到同样的问题。好像有某种我无法清除的秘密标头缓存。

标签: http nginx http-headers content-security-policy


【解决方案1】:

原来我被覆盖 CSP 标头的本地存储所挫败。即使清除缓存也不能解决问题,因为本地存储仍然存在。

希望这对其他人有帮助!

【讨论】:

  • localStorage 如何覆盖响应头?
  • @VeselinVasilev 有一个自定义脚本,我们不知道会妨碍它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多