【问题标题】:How can I disable cache for http headers?如何禁用 http 标头的缓存?
【发布时间】:2016-09-30 04:43:05
【问题描述】:

我正在阅读有关HTTP basic authentication 的信息。在 MDN 网站上,它说:

由于必须随每个 HTTP 请求发送 BA 标头,因此 Web 浏览器需要将凭据缓存一段合理的时间,以避免不断提示用户输入用户名和密码。不同浏览器的缓存策略不同。默认情况下,Microsoft Internet Explorer 会将它们缓存 15 分钟。

但是,在我告诉chrome postman 发送没有缓存标头的请求后,当我在服务器端记录流量时,我仍然注意到authorization 字段的存在:

{ host: 'localhost:3000',
  connection: 'keep-alive',
  authorization: 'Basic YWRtaW46cGFzc3dvcmQ=',   // why?
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
  'cache-control': 'no-cache',
  'postman-token': '7e458c2d-b11b-026d-809b-68a7cf3d5a37',
  ....

然后我也尝试只使用 google chrome,但我再次看到了 authorization 字段:

{ host: 'localhost:3000',
  connection: 'keep-alive',
  pragma: 'no-cache',
  'cache-control': 'no-cache',
  authorization: 'Basic YWRtaW46cGFzc3dvcmQ=', // again
  ....

问题 1:我为两个 Chrome 都禁用了缓存(我找不到 no-cached 选项,所以我只选择了“禁用缓存” 在 chrome 调试器中)和 postman (有一个“无缓存标头”选项),但它们仍然包含 authentication 标头...为什么?我怎样才能阻止他们这样做?

问题2:当我试图让客户端不发回Cookie时发生了同样的事情,我什至使用了clear cookie chrome 历史中的功能......但我仍然在请求标头中看到它的存在。我假设每个标头字段都以不同的方式缓存,那么我该如何管理 cookie?

打开隐身窗口会使浏览器忘记授权和 cookie...但只有一次:后续选项卡会有这些标题。

【问题讨论】:

  • 我刚刚了解到这些cookies被称为浏览器会话cookies,如果我关闭并重新打开浏览器(或打开一个icognito)它们就会消失,但是我没有其他方法来控制它们吗?

标签: google-chrome caching cookies http-headers


【解决方案1】:

我注意到了同样的事情,这很令人沮丧。但是您可以单击 Chrome 网络检查器中的“禁用缓存”选项,它将/应该将其删除(在我的情况下,我只需要它来使用新的 Auth 标头更新缓存)。

这是令人担忧的,因为如果用户登录应用程序并且令牌过期,应用程序可以刷新它并将新令牌提供给 http 客户端,但 Chrome 会自动用过期令牌覆盖它......

【讨论】:

  • OP 已经提到使用此功能,但声称仍然收到错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
  • 2011-01-28
  • 2016-11-09
相关资源
最近更新 更多