http响应标头中的Access-Control-Max-Age和Cache-Control有什么区别?
Access-Control-Max-Age:1728000
Cache-Control:max-age=21600, public
我觉得他们没有提到同一件事,因为他们经常一起出现,有时候会有不同的价值观。
如果他们做都出现在http标头中,但包含不同的值,那么这是否有效?
答案 0 :(得分:15)
http响应标头中的Access-Control-Max-Age和Cache-Control有什么区别?
这些标题用于不同的上下文中,用于不同的目的:
Cache-Control
用于广泛的一般上下文中,以指定资源被视为新鲜的最长时间。
Access-Control-Max-Age
用于CORS preflight requests。它表示可以缓存预检请求的结果多长时间。这种情况下的结果是Access-Control-Allow-Methods
和Access-Control-Allow-Headers
标题的内容。
换句话说,这些价值观涉及不同事物的新鲜感。
Cache-Control
的{{1}}用于下载的资源,
max-age=
用于其他标题字段中的内容。
我觉得他们没有提到同一件事,因为他们经常一起出现,有时候会有不同的价值观。
如前所述,它们指的是完全不同的东西。
一起看他们可能只是巧合。
通常建议在适用时设置Access-Control-Max-Age
的{{1}}。
设置Cache-Control
似乎并不十分重要,
因为浏览器可能会设置合理的默认值。
如果它们都出现在http标头中,但包含不同的值,那么这是否有效?
由于这些标题不相关,
这是有效的。
但是,示例中的值max-age
有点奇怪,
因为浏览器通常将此限制为更小的值
(Firefox在24小时(86400秒)和Chromium在10分钟(600秒)处上限。 Chromium还指定默认值5秒。
@Filippos附录:
另请注意,Access-Control-Max-Age只能在(使用HTTP OPTIONS)的预检请求中使用(有意义)。同时HTTP规范(RFC 7231)不允许HTTP OPTIONS请求中的缓存(“对OPTIONS方法的响应不可缓存”),因此从本质上讲,对于HTTP OPTIONS,您只能使用Access-Control-Max-年龄