CORS の設定 - Amazon Simple Storage Service

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 リクエストを許可します。ワイルドカード文字 * は、すべてのオリジンを表します。

JSON
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example1.com" ], "ExposeHeaders": [] }, { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example2.com" ], "ExposeHeaders": [] }, { "AllowedHeaders": [], "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [] } ]
XML
<CORSConfiguration> <CORSRule> <AllowedOrigin>http://www.example1.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> <CORSRule> <AllowedOrigin>http://www.example2.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> </CORSRule> </CORSConfiguration>

例 2

次の CORS 設定に示すように、CORS 設定ではオプションの設定パラメータも使用できます。この例で、CORS 設定は http://www.example.com オリジンからのクロスオリジン PUT、POST、および DELETE の各リクエストを許可します。

JSON
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example.com" ], "ExposeHeaders": [ "x-amz-server-side-encryption", "x-amz-request-id", "x-amz-id-2" ], "MaxAgeSeconds": 3000 } ]
XML
<CORSConfiguration> <CORSRule> <AllowedOrigin>http://www.example.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> <MaxAgeSeconds>3000</MaxAgeSeconds> <ExposeHeader>x-amz-server-side-encryption</ExposeHeader> <ExposeHeader>x-amz-request-id</ExposeHeader> <ExposeHeader>x-amz-id-2</ExposeHeader> </CORSRule> </CORSConfiguration>

前述の設定の CORSRule エレメントには、次のオプションのエレメントが含まれます。

  • MaxAgeSeconds— 指定したリソースのプリフライト OPTIONS リクエストへの Amazon S3 レスポンスをブラウザでキャッシュする時間を秒単位で指定します (この例では 3,000)。レスポンスのキャッシュにより、元のリクエストが繰り返された場合に、ブラウザは Amazon S3 にプリフライトリクエストを送信する必要がありません。

  • ExposeHeader − 顧客がアプリケーションから (例えば JavaScript x-amz-server-side-encryption オブジェクトから) アクセスできるレスポンスヘッダー (この例では x-amz-request-idx-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 メソッド、およびオリジンによって識別されたプリフライトリクエストのレスポンスをブラウザでキャッシュできる時間を秒単位で指定します。