缓存验证(缓存控制头的无缓存)在http协议中做什么?

时间:2014-01-13 05:48:19

标签: http http-headers w3c cache-control

我正在尝试了解cache-control http标头的工作原理。

cache-control标头可以包含no-cache值。我已经检查了w3c中的定义并且说:

  

如果no-cache指令未指定字段名称,则指定缓存   不得使用响应来满足后续请求   使用原始服务器成功重新验证。

它告诉no-cache值将触发每个请求的验证。

我想知道的是,什么是cache validation以及它在http协议中做了什么?

感谢你的帮助。现在我理解验证意味着检查缓存是否包含来自服务器的最新内容。

我的进一步问题是no-cache将解决的问题。请提供一些方案,比如在http标头中应用no-cache之后,将修复哪些安全问题。

谢谢你们

1 个答案:

答案 0 :(得分:0)

no-cache指令不用于安全目的。安全性定义在规则中,这些规则定义了不允许缓存CDN /代理服务器的哪些数据/资源。因此,如果需要安全性,则客户端/服务器应使用no-store指令。看下:

当客户机准备好接受来自缓存的资源时,只要服务器确认已缓存的资源是最新的(新鲜的),便使用no-cache指令。 proxy / cdn可以使用两种方法来重新验证资源的新鲜度:

1)如果客户端发送了ETAG值,则proxy / cdn可以在If-None-Match标头下将其转发到服务器。如果服务器以“ 304 Not Modified”(304未修改)作为响应,则缓存的资源可以新鲜使用。

2)使用If-Modified-Since标头和上次从服务器下载资源时收到的日期值(可以在服务器上次响应的Last-Modified标头下找到)。