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 メソッド、およびオリジンによって識別されたプリフライトリクエストのレスポンスをブラウザでキャッシュできる時間を秒単位で指定します。