2

JQuery を介して Cloudfront ディストリビューションに AJAX リクエストを行う Heroku アプリがあります。myapp.herokuapp.com から自分の Web サイトを読み込むと、すべてが完全に機能します。

カスタム ドメイン (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はそれをキャッシュします。そのため、同じCFディストリビューションを使用している場合でも、異なるドメインからのセカンダリリクエストはCORS検証に失敗します。

于 2013-03-19T15:49:08.663 に答える