我有一个Amazon CloudFront设置,指向S3存储桶作为CDN。我还有一个指向此CloudFront的备用域名(不在Route53上)。
在使用备用域名时,我一直无法通过CDN获取脚本 - 但如果我使用CloudFront控制面板中的本机脚本,则可以正常工作。
除了设置域名CNAME以指向CORS的亚马逊CloudFront地址之外,我还需要做些什么吗?
答案 0 :(得分:1)
正确缓存Web请求的一个重要部分是确保从缓存提供的响应是正确的,"从某种意义上说,对于同一个请求,它是否与原点生成的响应相匹配。
这并不像听起来那么简单,因为如果某些请求标题,响应可能会因内容而异。
CloudFront采用保守和安全的方法,通过剥离大多数请求标头,因为它将请求转发到源服务器 - 如果服务器无法看到标头,它就不能使用标头来改变它响应。
对于CORS,原始服务器查看Origin:
,Access-Control-Request-Headers:
和Access-Control-Request-Method:
标题至关重要,以便它可以做出相应的响应。
但是,将不必要的标头转发到原始服务器会导致缓存效率低下,因为缓存的响应只会针对相同的未来请求提供,包括转发的标头。
因此,三个CORS请求标头必须是#34;白名单"在CloudFront缓存行为中,以便将它们转发到源服务器(在本例中为S3)。