Cross−Origin Resource Sharing (CORS) の使用 - Amazon Simple Storage Service

Cross−Origin Resource Sharing (CORS) の使用

Cross−Origin Resource Sharing (CORS) は、特定のドメインにロードされたクライアントウェブアプリケーションが異なるドメイン内のリソースと通信する方法を定義します。Amazon S3 の CORS のサポートによって、Amazon S3 でリッチなクライアント側ウェブアプリケーションを構築し、Amazon S3 リソースへのクロスオリジンアクセスを選択的に許可できます。

このセクションでは、CORS の概要を示します。サブトピックでは、Amazon S3 コンソールを使用するか、Amazon S3 REST API や AWS SDK を使用して、プログラムによって CORS を有効にする方法について説明します。

Cross−Origin Resource Sharing: ユースケースのシナリオ

CORS のユースケースの例を以下に示します。

シナリオ 1

Amazon S3 を使用して静的ウェブサイトをホスティングする」で説明されているように、website という名前の Amazon S3 バケットでウェブサイトをホストしているとします。ユーザーは、次のウェブサイトエンドポイントをロードします。

http://website.s3-website.us-east-1.amazonaws.com

このバケットに保存されているウェブページで JavaScript を使用し、バケットの Amazon S3 の API エンドポイント website.s3.us-east-1.amazonaws.com を使用して、同じバケットに対して認証済みの GET および PUT リクエストを行います。ブラウザは通常、それらのリクエストを許可しないように、JavaScript をブロックしますが、CORS を使用することにより、website.s3-website.us-east-1.amazonaws.com からのクロスオリジンリクエストを明示的に有効にするようにバケットを設定できます。

シナリオ 2

S3 バケットからウェブフォントをホストする必要があるとします。ここでも、ブラウザでウェブフォントを読み込むために CORS チェック (プリフライトチェックと呼ばれます) が必要です。ウェブフォントをホストしているバケットを、いずれのオリジンもこれらのリクエストを実行できるように設定します。

Amazon S3 でのバケットの CORS 設定の評価方法

Amazon S3 がブラウザからプリフライトリクエストを受け取ると、バケットの CORS 設定を評価し、受信ブラウザリクエストに一致する最初の CORSRule ルールを使用して、クロスオリジンリクエストを有効にします。ルールが一致するには、次の条件を満たしている必要があります。

  • バケットへの CORS リクエストの Origin ヘッダーは、CORS 設定の AllowedOrigins エレメントのオリジンと一致している必要があります。

  • バケットへの CORS リクエストの Access-Control-Request-Method で指定されている HTTP メソッドは、CORS 設定の AllowedMethods エレメントに含まれているメソッドと一致している必要があります。

  • プリフライトリクエストの Access-Control-Request-Headers ヘッダーに含まれているヘッダーは、CORS 設定の AllowedHeaders エレメントのヘッダーと一致している必要があります。

注記

バケットの CORS 設定を有効にすると、ACL とポリシーが引き続き適用されます。

Object Lambda アクセスポイントで CORS をサポートする方法

S3 Object Lambda がブラウザからリクエストを受信するか、リクエストに Origin ヘッダーが含まれている場合、S3 Object Lambda は常に “AllowedOrigins":"*" ヘッダーフィールドを追加します。

CORS の使用の詳細については、次のトピックを参照してください。