25

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

Vary: Origin 告诉后续 CDN 等响应是根据请求者 Origin 标头值协商的。

问题是(我已经测试了领先的 CDN 提供商),如果请求者没有在他们的请求中提供 Origin 标头,或者不是允许的 Origin 值之一,则响应不包括变化:响应中的来源。

执行 CORS 的 CDN 是否应该始终在响应标头中使用 Vary: Origin 进行响应? 如果不是,CDN 会相信它可以对任何 Origin 值提供相同的响应。再说一次,可以通过发出许多具有随机原始值的请求来填充 CDN 缓存。

4

1 回答 1

31

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

于 2014-08-15T16:02:10.930 回答