为什么不发生变化:起源'对CORS未命中的响应?

时间:2014-08-15 15:34:25

标签: cors cdn amazon-cloudfront azure-cdn

在发出CORS请求时,如果请求的Origin位于允许的来源列表中,则响应包含Access-Control-Allow-Origin标头和Vary: Origin标头。

Vary:Origin告诉CDNs等,响应是根据请求者的Origin头值协商的。

问题是(我已经测试了领先的CDN提供商),如果请求者在他们的请求中没有提供Origin头,或者Origin值不是允许的那个,那么响应会不包括反应中的Vary:Origin。

预先形成CORS的CDN是否总是以响应头中的Vary:Origin响应?如果不是,CDN会认为它可以对任何Origin值提供相同的响应。然后,通过使用随机原始值进行许多请求,可以填充CDN缓存。

1 个答案:

答案 0 :(得分:20)

是。如果请求可能包含具有不同值的Access-Control-Allow-Origin,则CDN应始终使用Vary: Origin回复,即使对于没有Access-Control-Allow-Origin标头的响应也是如此。您的分析是正确的:如果标题始终不存在,则可以使用不正确的值填充缓存。