CORS在"替代"域名

时间:2016-05-07 20:26:10

标签: amazon-web-services

我有一个Amazon CloudFront设置,指向S3存储桶作为CDN。我还有一个指向此CloudFront的备用域名(不在Route53上)。

在使用备用域名时,我一直无法通过CDN获取脚本 - 但如果我使用CloudFront控制面板中的本机脚本,则可以正常工作。

除了设置域名CNAME以指向CORS的亚马逊CloudFront地址之外,我还需要做些什么吗?

1 个答案:

答案 0 :(得分:1)

正确缓存Web请求的一个重要部分是确保从缓存提供的响应是正确的,"从某种意义上说,对于同一个请求,它是否与原点生成的响应相匹配。

这并不像听起来那么简单,因为如果某些请求标题,响应可能会因内容而异。

CloudFront采用保守和安全的方法,通过剥离大多数请求标头,因为它将请求转发到源服务器 - 如果服务器无法看到标头,它就不能使用标头来改变它响应。

对于CORS,原始服务器查看Origin:Access-Control-Request-Headers:Access-Control-Request-Method:标题至关重要,以便它可以做出相应的响应。

但是,将不必要的标头转发到原始服务器会导致缓存效率低下,因为缓存的响应只会针对相同的未来请求提供,包括转发的标头。

因此,三个CORS请求标头必须是#34;白名单"在CloudFront缓存行为中,以便将它们转发到源服务器(在本例中为S3)。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-cors