12

最近、Rails アプリケーションの CDN として機能する Amazon S3 + CloudFront を有効にしました。フォント アセットを使用して Firefox または IE で表示するには、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>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

それから私は を使用curl -I https://small-read-staging-assets.s3.amazonaws.com/staging/assets/settings_settings-312b7230872a71a534812e770ec299bb.js.gzしました、私は得ました:

HTTP/1.1 200 OK
x-amz-id-2: Ovs0D578kzW1J72ej0duCi17lnw+wZryGeTw722V2XOteXOC4RoThU8t+NcXksCb
x-amz-request-id: 52E934392E32679A
Date: Tue, 04 Jun 2013 02:34:50 GMT
Cache-Control: public, max-age=31557600
Content-Encoding: gzip
Expires: Wed, 04 Jun 2014 08:16:26 GMT
Last-Modified: Tue, 04 Jun 2013 02:16:26 GMT
ETag: "723791e0c993b691c442970e9718d001"
Accept-Ranges: bytes
Content-Type: text/javascript
Content-Length: 39140
Server: AmazonS3

どこかで見るべき'Access-Control-Allow-Origin'ですか?S3 は CORS 設定を更新するのに時間がかかりますか? ヘッダーがキャッシュされている場合、期限切れのヘッダーを強制できますか?

4

4 に答える 4

3

これらを試してください:

  1. アクセスを許可するドメイン名の範囲を絞り込んでみてください。S3は好きではありません*
  2. CloudFront + S3 は、そのままでは CORS 構成を正しく処理しません。クラッジは、参照ドメインの名前を含むクエリ文字列を追加し、CloudFront ディストリビューション設定でクエリ文字列のサポートを明示的に有効にすることです。
于 2013-08-03T05:08:47.527 に答える
3

タイトルの実際の質問に答えるには:

いいえ、S3 は CORS 設定を反映するのに時間がかからないようです。(2019年現在)

ただし、Chrome (およびおそらくその他のもの) を使用している場合は、CORS 設定がブラウザーによってキャッシュされる可能性があるため、通常のブラウザーの更新を行うだけでは、必ずしも期待する変更が表示されるとは限りません。代わりに、更新ボタンを右クリックして、[キャッシュを空にしてハード リロード] を選択します (Chrome 73 以降)。その後、新しい CORS 設定は、AWS コンソールで変更を行ってから 5 秒以内に有効になります。(それよりもはるかに速いかもしれません。テストしていません。) これはプレーンな S3 バケットに適用されます。CloudFront がどのように影響するかはわかりません。

(この質問は6年前のものであり、他の人がずっと前に回答した追加の技術的な問題が含まれている可能性があることを認識していますが、CORSの変更の伝播時間に関する単純な質問を検索すると、この質問が最初に表示されるので、私は思う.それに対処する答えに値します。)

于 2019-04-18T18:48:27.397 に答える