如果我回复了一个包含access-control-request-method:PUT
的响应标头access-control-allow-origin
并且与access-control-allow-method:PUT
匹配的access-control-max-age:7200
和{{1}}将会被缓存2小时并且始终只返回方法PUT或者如果说下一个请求是access-control-request-method:POST,我是否能够只响应所请求的特定方法?
答案 0 :(得分:2)
如果我回复了包含
access-control-request-method:PUT
的响应标头access-control-allow-origin
的cors请求,其响应标头access-control-allow-method:PUT
与原点匹配,而access-control-max-age:7200
和PUT
将被缓存2小时
是的,虽然在Chrome中它只会缓存10分钟 - 因为the Chrome sources hardcode an upper limit for it of 600 seconds(10分钟),无论您指定的值是多大。
并且始终只返回方法PUT,或者如果说下一个请求是access-control-request-method:POST?
,我是否能够仅使用所请求的特定方法进行响应
它不会总是只返回access-control-request-method: POST
;如果下一个请求有PUT
,则会跳过缓存并向您的服务器发出新请求。
这符合Fetch spec中的相关要求(当前定义CORS协议的浏览器行为的规范);具体而言,浏览器需要按每个方法缓存预检,并且仅在“method cache match”时使用缓存。
因此,您使用PUT
方法的第一个请求会为Access-Control-Max-Age
个请求创建一个预检缓存条目,期限为POST
秒 - 以及POST
的任何下一个请求method会为Access-Control-Max-Age
个请求创建一个单独的预检缓存条目,其自身的有效期为renderToString
秒。