我有一个Heroku应用程序通过JQuery向我的cloudfront发行版发出AJAX请求。当我从myapp.herokuapp.com加载我的网站时,一切都很完美。
当我从我的自定义域(类似myapp.subdomain.domain.com)访问该应用时,我明白这一点:
XMLHttpRequest cannot load [cloudfront dist here]/something.json. Origin http://myapp.subdomain.domain.com is not allowed by Access-Control-Allow-Origin.
这很奇怪。在我的S3 CORS配置中,我允许所有域*
:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
为什么会这样?有什么想法吗?
答案 0 :(得分:4)
您可能会被这个S3 / CloudFront错误https://forums.aws.amazon.com/thread.jspa?messageID=377513
所困扰当S3看到来自myapp.herokuapp.com的请求时,它会重写Access-Control-Allow-Origin: myapp.herokuapp.com
,而不是您期望的*
。并且CF缓存了这一点。因此,即使使用相同的CF分发,来自不同域的辅助请求也将无法通过CORS验证。