访问控制最大年龄与缓存控制在http响应头中有什么区别?访问控制最大年龄与缓存控制
Access-Control-Max-Age:1728000
Cache-Control:max-age=21600, public
我觉得他们不是指同一件事情,因为他们经常出现在一起,有时会出现不同的值。
如果他们做都出现在一个http头中,但包含不同的值,这是否有效?
访问控制最大年龄与缓存控制在http响应头中有什么区别?访问控制最大年龄与缓存控制
Access-Control-Max-Age:1728000
Cache-Control:max-age=21600, public
我觉得他们不是指同一件事情,因为他们经常出现在一起,有时会出现不同的值。
如果他们做都出现在一个http头中,但包含不同的值,这是否有效?
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
的max-age=
用于下载资源, Access-Control-Max-Age
用于其他标题字段中的内容。
我有一种感觉,他们并不是指同一件事,因为他们经常出现在一起,有时会出现不同的值。
如前所述,它们指的是完全不同的东西。看到他们在一起可能只是巧合。 设置Cache-Control
的max-age
通常建议适用时。 设置Access-Control-Max-Age
似乎并不重要, 作为浏览器可能设置合理的默认值。
如果他们都出现在一个http头中,但包含不同的值,这是否有效?
由于这些标头不相关,所以这是有效的。 然而,在你的例子中,值Access-Control-Max-Age: 1728000
有点奇怪, ,因为浏览器通常将此限制为更小的值 (Firefox在24小时(86400秒)限制此项,而在10分钟(600秒)时限制Chromium)。 Chromium还指定了5秒的默认值。
附录由@Filippos:
还要注意,访问控制,最大年龄只能用(有意义)的预检要求,雇用HTTP OPTIONS。同时,HTTP规范(RFC 7231)不允许在HTTP OPTIONS请求中进行缓存(“对OPTIONS方法的响应不可缓存”),所以实质上,对于HTTP OPTIONS,只剩下Access-Control-Max-年龄
这很有意义,示例域中可能存在一些跨域资源,但Access-Control标头在每个http响应中都显示(不正确),而不是所讨论的资源。由于我不希望访问控制标题出现在标准的非共享资源上,因此脱离了上下文。感谢您的洞察! – Radderz
另请注意,Access-Control-Max-Age只能在使用HTTP OPTIONS的预检请求中使用(有意义)。同时,HTTP规范(RFC 7231)不允许在HTTP OPTIONS请求中进行缓存(“对OPTIONS方法的响应不可缓存”),所以实质上,对于HTTP OPTIONS,只剩下Access-Control-Max-年龄。 – Filippos
好点,谢谢@菲利波斯 – janos