2

我有一个 Heroku 应用程序通过 JQuery 向我的云端分发发出 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>

为什么会发生这种情况?有任何想法吗?

4

1 回答 1

4

您可能被这个 S3/CloudFront 错误https://forums.aws.amazon.com/thread.jspa?messageID=377513

当 S3 看到来自 myapp.herokuapp.com 的请求时,它会重写Access-Control-Allow-Origin: myapp.herokuapp.com,而不是*您期望的那样。CF 会缓存它。因此,来自不同域的辅助请求将无法通过 CORS 验证,即使使用相同的 CF 分发也是如此。

于 2013-03-19T15:49:08.663 回答