

# Cross−Origin Resource Sharing (CORS) の使用
<a name="cors"></a>

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: ユースケースのシナリオ
<a name="example-scenarios-cors"></a>

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

**シナリオ 1**  
「`website`」で説明されているように、[Amazon S3 を使用して静的ウェブサイトをホスティングする](WebsiteHosting.md) という名前の 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 設定の評価方法
<a name="cors-eval-criteria"></a>

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 をサポートする方法
<a name="cors-olap-cors"></a>

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

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

**Topics**
+ [Cross−Origin Resource Sharing: ユースケースのシナリオ](#example-scenarios-cors)
+ [Amazon S3 でのバケットの CORS 設定の評価方法](#cors-eval-criteria)
+ [Object Lambda アクセスポイントで CORS をサポートする方法](#cors-olap-cors)
+ [CORS 設定のエレメント](ManageCorsUsing.md)
+ [Cross−Origin Resource Sharing (CORS) の設定](enabling-cors-examples.md)
+ [CORS のテスト](testing-cors.md)
+ [CORS のトラブルシューティング](cors-troubleshooting.md)