Open cqupt-yifanwu opened 7 years ago
Cache-Control头在HTTP中有一定的难度,第一它既可以用于请求头,也可以用于响应头(这里主要将响应缓存)。第二,它控制着两个缓存,本地缓存:指客户端本地及其中的缓存(大多指浏览器缓存),但是它完全不受控制,通常浏览器会自己决定是否把某些内容放到缓存中,同时用户也可以自己处理缓存(清空)。共享缓存,处于客户端和服务器之间的缓存。既CDN。开发者可以绝对的控制。
1. Cache-Control: public max-age=3600 2. Cache-Control: private immutable 3. Cache-Control: no-cache 4. Cache-Control: public max-age=3600 s-maxage=7200 5. Cache-Control: public max-age=3600 proxy-revalidate
首先,Cache-Control有三种属性:缓冲能力、过期时间和二次验证。
cache-Control不是响应头独有的,在有些请求头中会带有Cache-Control,但是我们为什么很少在请求头中见到这个呢?(也很少见到这方面的资料)原因就是:他非常的危险!
我们知道,HTTP中的PUT方法是具有很大的风险性的,因为它有可能使服务端的资源被不安全的客户端修改,请求中的Cache-Control也是一样,来跟我仔细思考:前面说到CDN是为了加快访问同时减轻服务器的压力,甚至是保护底层的数据库,那么试想,如果客户端利用Cache-Control强行的关闭掉CDN直接把请求发送到服务器上,此时攻击者就可与击穿CDN!所以说他具有很大的风险性,实现这个规范的服务器少之又少!
介绍
Cache-Control头在HTTP中有一定的难度,第一它既可以用于请求头,也可以用于响应头(这里主要将响应缓存)。第二,它控制着两个缓存,本地缓存:指客户端本地及其中的缓存(大多指浏览器缓存),但是它完全不受控制,通常浏览器会自己决定是否把某些内容放到缓存中,同时用户也可以自己处理缓存(清空)。共享缓存,处于客户端和服务器之间的缓存。既CDN。开发者可以绝对的控制。
代码示例
属性
首先,Cache-Control有三种属性:缓冲能力、过期时间和二次验证。
缓冲能力
过期时间
二次验证(表示精细控制)
对示例代码的解释
关于请求头中的Cache-Control
cache-Control不是响应头独有的,在有些请求头中会带有Cache-Control,但是我们为什么很少在请求头中见到这个呢?(也很少见到这方面的资料)原因就是:他非常的危险!
我们知道,HTTP中的PUT方法是具有很大的风险性的,因为它有可能使服务端的资源被不安全的客户端修改,请求中的Cache-Control也是一样,来跟我仔细思考:前面说到CDN是为了加快访问同时减轻服务器的压力,甚至是保护底层的数据库,那么试想,如果客户端利用Cache-Control强行的关闭掉CDN直接把请求发送到服务器上,此时攻击者就可与击穿CDN!所以说他具有很大的风险性,实现这个规范的服务器少之又少!