

# CORS 設定のエレメント
<a name="ManageCorsUsing"></a>

クロスオリジンリクエストを許可するようバケットを設定するには、CORS 設定を作成します。CORS 設定は、バケットへのアクセスを許可するオリジン、各オリジンでサポートされるオペレーション (HTTP メソッド)、その他のオペレーション固有情報を識別するエレメントを持つ XML ドキュメントです。設定には、最大 100 のルールを追加できます。CORS 設定を `cors` サブリソースとしてバケットに追加できます。

S3 コンソールで CORS を設定する場合は、JSON を使用して CORS 設定を作成する必要があります。新しい S3 コンソールでは、JSON CORS 設定のみがサポートされます。

CORS 設定とそのエレメントの詳細については、以下のトピックを参照してください。CORS 設定を追加する方法については、[Cross−Origin Resource Sharing (CORS) の設定](enabling-cors-examples.md) を参照してください。

**重要**  
S3 コンソールでは、CORS 設定は JSON である必要があります。

**Topics**
+ [`AllowedMethods` 要素](#cors-allowed-methods)
+ [`AllowedOrigins` 要素](#cors-allowed-origin)
+ [`AllowedHeaders` 要素](#cors-allowed-headers)
+ [`ExposeHeaders` 要素](#cors-expose-headers)
+ [`MaxAgeSeconds` 要素](#cors-max-age)
+ [CORS 設定の例](#cors-example-1)

## `AllowedMethods` 要素
<a name="cors-allowed-methods"></a>

CORS 設定では、`AllowedMethods` エレメントに次の値を指定できます。
+ GET
+ PUT
+ POST
+ DELETE
+ HEAD

## `AllowedOrigins` 要素
<a name="cors-allowed-origin"></a>

`AllowedOrigins` エレメントに、クロスドメインリクエストを許可するオリジンを指定します (` http://www.example.com` など)。オリジン文字列には、1 つのワイルドカード文字 (`*`) のみを含めることができます。例えば、`http://*.example.com` などです。オプションで、オリジンに `*` を指定して、すべてのオリジンでクロスオリジンリクエストを送信できるようにすることができます。さらに、`https` を指定して、セキュリティで保護されたオリジンのみを有効にすることもできます。

## `AllowedHeaders` 要素
<a name="cors-allowed-headers"></a>

`AllowedHeaders` エレメントは、`Access-Control-Request-Headers` ヘッダーによって、プリフライトリクエストで許可されるヘッダーを指定します。`Access-Control-Request-Headers` ヘッダー内の各ヘッダー名は、エレメントの対応するエントリと一致している必要があります。Amazon S3 は、レスポンスで、リクエストされたヘッダーのうち許可されたヘッダーのみを送信します。Amazon S3 へのリクエストで使用できるヘッダーのサンプルリストについては、[Amazon Simple Storage Service API リファレンス](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html)の*一般的なリクエストヘッダー* を参照してください。

設定内の各 AllowedHeaders 文字列には、最大 1 つのワイルドカード文字 (\$1) を含めることができます。例えば、`<AllowedHeader>x-amz-*</AllowedHeader>` は Amazon 固有のすべてのヘッダーを有効にします。

## `ExposeHeaders` 要素
<a name="cors-expose-headers"></a>

各 `ExposeHeader` エレメントは、顧客がアプリケーションから (例えば、JavaScript `XMLHttpRequest` オブジェクトから) アクセスできるようにするレスポンス内のヘッダーを識別します。一般的な Amazon S3 レスポンスヘッダーのリストについては、[Amazon Simple Storage Service API リファレンス](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html)の*一般的なリクエストヘッダー* を参照してください。

## `MaxAgeSeconds` 要素
<a name="cors-max-age"></a>

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

## CORS 設定の例
<a name="cors-example-1"></a>

ウェブサイトへのアクセスに Amazon S3 ウェブサイトエンドポイントを使用する代わりに、所有するドメイン、例えば `example1.com` を使用してコンテンツを配信できます。独自のドメインの使用については、[チュートリアル: Route 53 に登録されたカスタムドメインを使用した静的ウェブサイトの設定](website-hosting-custom-domain-walkthrough.md) を参照してください。

次の 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>
```

------

次の 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 にプリフライトリクエストを送信する必要がありません。
+ `ExposeHeaders` − 顧客がアプリケーションから (例えば JavaScript `x-amz-server-side-encryption` オブジェクトから) アクセスできるレスポンスヘッダー (この例では `x-amz-request-id`、`x-amz-id-2`、および `XMLHttpRequest`) を識別します。