【问题标题】:Ensure responses are not cached确保不缓存响应
【发布时间】:2011-08-03 13:36:12
【问题描述】:

我有一个特定的 HTTP 响应,我不想缓存它,因为它包含私有/敏感数据

我已经将 Cache-Control 设置为 no-store, 它应该处理支持 HTTP/1.1 的客户端。

如何使用 Expires 标头为 HTTP/1.0 做同样的事情?我应该用 1970 年的任意时间戳设置它吗?是否有一个特殊的值告诉它永远不要缓存?

【问题讨论】:

  • 您应该解释为什么您不想缓存响应。 No-store 可能无法达到您的预期,也可能是矫枉过正。
  • @Eric:我不希望缓存响应,因为其中包含私有/敏感数据。我会更新问题

标签: http caching cache-control browser-cache


【解决方案1】:

HTTP RFC 说:

要将响应标记为“已过期”,源服务器会发送一个与 Date 标头值相等的 Expires 日期。

您应该将 expires 标头设置为过去的日期。您还应该在 Cache-Control 标头上设置 must-revalidate 标志。

到期:格林威治标准时间 1990 年 1 月 1 日星期五 00:00:00
缓存控制:无缓存,必须重新验证

你可以在doctype wiki找到一篇处理缓存问题的好文章:

在过去设置 Expires 标头可确保 HTTP/1.0 和 HTTP/1.1 代理和浏览器不会缓存内容。这 缓存控制指令还告诉 HTTP/1.1 代理不要缓存 内容。即使代理可能被配置为返回陈旧的内容 当他们不应该时,必须重新验证重新确认他们应该 不要这样做。

【讨论】:

  • 如果我使用的是 no-store 而不是 no-cache,是否需要重新验证?
  • 如果数据不应该被缓存的原因是安全,那么你必须添加no-store。这可以防止浏览器和 Web 缓存将任何数据存储在非易失性内存中。如果没有这个标志,浏览器仍然可以保留一些数据用于“返回”和“查看源代码”等功能。
猜你喜欢
  • 2021-09-28
  • 2013-12-08
  • 2014-09-12
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 2015-05-12
  • 1970-01-01
  • 2013-09-05
相关资源
最近更新 更多