CORS の設定
クロスオリジンリクエストを許可するようバケットを設定するには、CORS 設定を作成します。CORS 設定は、バケットへのアクセスを許可するオリジン、各オリジンでサポートされるオペレーション (HTTP メソッド)、その他のオペレーション固有情報を識別するルールを持つ XML ドキュメントです。設定には、最大 100 のルールを追加できます。CORS 設定を cors
サブリソースとしてバケットに追加できます。
S3 コンソールで CORS を設定する場合は、JSON を使用して CORS 設定を作成する必要があります。新しい S3 コンソールでは、JSON CORS 設定のみがサポートされます。
CORS 設定とそのエレメントの詳細については、以下のトピックを参照してください。CORS 設定を追加する方法については、Cross−Origin Resource Sharing (CORS) の設定 を参照してください。
重要
S3 コンソールでは、CORS 設定は JSON である必要があります。
トピック
例 1
ウェブサイトへのアクセスに Amazon S3 ウェブサイトエンドポイントを使用する代わりに、所有するドメイン、例えば example1.com
を使用してコンテンツを配信できます。独自のドメインの使用については、チュートリアル: Route 53 に登録されたカスタムドメインを使用した静的ウェブサイトの設定 を参照してください。
次の例の cors
設定には 3 つのルールがあり、CORSRule
エレメントとして指定されています。
-
最初のルールは、
http://www.example1.com
オリジンからのクロスオリジン PUT、POST、および DELETE リクエストを許可します。このルールは、Access-Control-Request-Headers
ヘッダーによって、プリフライト OPTIONS リクエスト内のすべてのヘッダーも許可します。プリフライト OPTIONS リクエストへのレスポンスとして、Amazon S3 はリクエストされたヘッダーを返します。 -
2 つ目のルールは最初のルールと同じクロスオリジンリクエストを許可しますが、このルールは別のオリジン
http://www.example2.com
に適用されます。 -
3 つ目のルールは、すべてのオリジンからのクロスオリジン GET リクエストを許可します。ワイルドカード文字
*
は、すべてのオリジンを表します。
例 2
次の CORS 設定に示すように、CORS 設定ではオプションの設定パラメータも使用できます。この例で、CORS 設定は http://www.example.com
オリジンからのクロスオリジン PUT、POST、および DELETE の各リクエストを許可します。
前述の設定の CORSRule
エレメントには、次のオプションのエレメントが含まれます。
-
MaxAgeSeconds
— 指定したリソースのプリフライト OPTIONS リクエストへの Amazon S3 レスポンスをブラウザでキャッシュする時間を秒単位で指定します (この例では 3,000)。レスポンスのキャッシュにより、元のリクエストが繰り返された場合に、ブラウザは Amazon S3 にプリフライトリクエストを送信する必要がありません。 -
ExposeHeader
− 顧客がアプリケーションから (例えば JavaScriptx-amz-server-side-encryption
オブジェクトから) アクセスできるレスポンスヘッダー (この例ではx-amz-request-id
、x-amz-id-2
、およびXMLHttpRequest
) を識別します。
AllowedMethod エレメント
CORS 設定では、AllowedMethod
エレメントに次の値を指定できます。
-
GET
-
PUT
-
POST
-
DELETE
-
HEAD
AllowedOrigin エレメント
AllowedOrigin
エレメントに、クロスドメインリクエストを許可するオリジンを指定します ( http://www.example.com
など)。オリジン文字列には、1 つのワイルドカード文字 (*
) のみを含めることができます。例えば、http://*.example.com
などです。オプションで、オリジンに *
を指定して、すべてのオリジンでクロスオリジンリクエストを送信できるようにすることができます。さらに、https
を指定して、セキュリティで保護されたオリジンのみを有効にすることもできます。
AllowedHeader エレメント
AllowedHeader
エレメントは、Access-Control-Request-Headers
ヘッダーによって、プリフライトリクエストで許可されるヘッダーを指定します。Access-Control-Request-Headers
ヘッダー内の各ヘッダー名は、ルールの対応するエントリに一致する必要があります。Amazon S3 は、レスポンスで、リクエストされたヘッダーのうち許可されたヘッダーのみを送信します。Amazon S3 へのリクエストで使用できるヘッダーのサンプルリストについては、Amazon Simple Storage Service API リファレンスの一般的なリクエストヘッダー を参照してください。
ルール内の各 AllowedHeader 文字列には、最大 1 つのワイルドカード文字 (*) を含めることができます。例えば、<AllowedHeader>x-amz-*</AllowedHeader>
は Amazon 固有のすべてのヘッダーを有効にします。
ExposeHeader エレメント
各 ExposeHeader
エレメントは、顧客がアプリケーションから (例えば、JavaScript XMLHttpRequest
オブジェクトから) アクセスできるようにするレスポンス内のヘッダーを識別します。一般的な Amazon S3 レスポンスヘッダーのリストについては、Amazon Simple Storage Service API リファレンスの一般的なリクエストヘッダー を参照してください。
MaxAgeSeconds エレメント
MaxAgeSeconds
エレメントは、リソース、HTTP メソッド、およびオリジンによって識別されたプリフライトリクエストのレスポンスをブラウザでキャッシュできる時間を秒単位で指定します。