在发出CORS请求时,如果请求的Origin位于允许的来源列表中,则响应包含Access-Control-Allow-Origin
标头和Vary: Origin
标头。
Vary:Origin告诉CDNs等,响应是根据请求者的Origin头值协商的。
问题是(我已经测试了领先的CDN提供商),如果请求者在他们的请求中没有提供Origin头,或者Origin值不是允许的那个,那么响应会不包括反应中的Vary:Origin。
预先形成CORS的CDN是否总是以响应头中的Vary:Origin响应?如果不是,CDN会认为它可以对任何Origin值提供相同的响应。然后,通过使用随机原始值进行许多请求,可以填充CDN缓存。
答案 0 :(得分:20)
是。如果请求可能包含具有不同值的Access-Control-Allow-Origin
,则CDN应始终使用Vary: Origin
回复,即使对于没有Access-Control-Allow-Origin
标头的响应也是如此。您的分析是正确的:如果标题始终不存在,则可以使用不正确的值填充缓存。