我有一个Amazon设置,它将一个CloudFront桶指向CDN。我还有一个替代域名(不是在Route53上),它指向这个CloudFront。
在使用替代域名时,我一直很难让脚本通过CDN --但是如果我使用CloudFront控制面板中的本地域名,它就能工作。
有什么特别的事情,我需要做,除了设置域名CNAME指向亚马逊的CloudFront地址,以使CORS工作?
发布于 2016-05-09 13:02:25
正确缓存web请求的一个重要部分是确保来自缓存的响应是“正确的”,如果它是否与原点生成的响应匹配,则为同一请求。
这并不像听起来那么简单,因为如果某些请求标头的内容不同,响应可能会有所不同。
CloudFront采用了一种保守和安全的方法,当它将请求转发给原始服务器时,它会剥离大部分请求头--如果服务器看不到标头,就不能使用标头来改变响应。
在CORS的情况下,源服务器必须看到Origin:、Access-Control-Request-Headers:和Access-Control-Request-Method:头,这样它才能相应地做出响应。
但是,将不必要的头转发到源服务器会导致效率低下的缓存,因为缓存的响应只能针对相同的未来请求(包括转发的标头)提供服务。
因此,在CloudFront缓存行为中,三个CORS请求头必须是“白名单”,以便将它们转发到源服务器(在本例中为S3)。
https://stackoverflow.com/questions/37093352
复制相似问题