http响应标头中的访问控制 - 最大值和高速缓存控制有什么区别?
Access-Control-Max-Age:1728000
Cache-Control:max-age=21600, public
我感觉他们没有提及同一件事,因为它们经常出现在一起,有时还具有不同的价值观。
如果它们 do 都出现在HTTP标题中,但是包含不同的值,这会有效吗?
http响应标头中的访问控制 - 最大值和高速缓存控制有什么区别?
这些标头用于不同的上下文和不同的目的:
-
Cache-Control
在广泛的一般环境中使用,以指定资源将被视为新鲜的最长时间。 -
Access-Control-Max-Age
用于CORS前跨请求中。它表明可以缓存前飞行请求的结果多长时间。在这种情况下,结果是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秒)时盖这个帽子。铬还指定默认值5秒。
@filippos的附录:
还要注意,访问控制 - 最大符号只能在前飞行请求中(有意义)使用HTTP选项。同时,HTTP规格(RFC 7231)不允许在HTTP选项请求中缓存("对选项方法的响应不可缓存"),因此,本质上,对于HTTP选项,您只剩下访问控制,年龄