

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# クロスオリジンリソース共有のサポートと Amazon EC2
<a name="cors-support"></a>

Amazon EC2 API は、Cross-Origin Resource Sharing (CORS) をサポートしています。CORS は、あるドメインにロードされたクライアントウェブアプリケーションが別のドメインのリソースとやり取りする方法を定義します。詳細については、「[Cross-Origin Resource Sharing W3C Recommendation](http://www.w3.org/TR/cors/)」を参照してください。Amazon EC2 の CORS サポートを使用すると、Amazon EC2 API を使用する豊富なクライアント側のウェブアプリケーションを構築できます。たとえば、ウェブサイト をホスト`mywebsite.example.com`していて、ウェブページで JavaScript を使用して Amazon EC2 API にリクエストするとします。通常、ブラウザは JavaScript によるこれらのリクエストの許可をブロックしますが、CORS を使用すると、 からクロスオリジン Amazon EC2 API コールを行うことができます`mywebsite.example.com`。

CORS は Amazon EC2 API に対して既に有効になっており、使用できる状態です。この機能の使用を開始するために、追加の設定ステップを実行する必要はありません。Amazon EC2 API を呼び出す方法に変更はありません。 がリクエスタを AWS 認証できるようにするには、有効な AWS 認証情報で署名する必要があります。詳細については、*IAM ユーザーガイド*[の AWS API リクエストの署名](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)を参照してください。

Amazon EC2 API での CORS の実装は標準化されています。アプリケーションは、シンプルなリクエストを Amazon EC2 API に送信するか、リクエストの内容に応じて、プリフライトリクエストの後に実際のリクエストを送信できます。Amazon EC2 は任意のオリジンからのリクエストを許可します

CORS の詳細と仕組みの例については、Mozilla デベロッパーネットワークの記事[「HTTP アクセスコントロール (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)」を参照してください。

## シンプルなリクエスト
<a name="cors-simple"></a>

以下は、単純なリクエストまたは実際のリクエストを定義する基準です。
+ リクエストは `GET`または HTTP `POST` メソッドのみを使用します。`POST` メソッドを使用する場合、 は `application/x-www-form-urlencoded`、、`multipart/form-data`または のいずれかのみ`Content-Type`を使用できます`text/plain`。
+ リクエストでは、 などのカスタムヘッダーは設定されません`X-Other-Header`。

Amazon EC2 は、任意のオリジンからのリクエストを許可します。`Access-Control-Allow-Credentials` 値を `true` ( の場合`XMLHttpRequest.withCredentials = true`) に設定してブラウザ認証情報を使用しようとする `GET`または `POST`リクエストは失敗します。

以下の情報では、Amazon EC2 へのリクエストヘッダーについて説明します。

**シンプルなリクエストヘッダー値**
+ `Origin`: リソースへのアクセスを希望するドメインを指定します (この場合、リソースは Amazon EC2)。これは、ブラウザによってクロスオリジンリクエストに挿入されます。

次の情報では、Amazon EC2 が単純なリクエストまたは実際のリクエストの後に返す (または返さない) レスポンスヘッダーについて説明します。

**シンプルなレスポンスヘッダー値**
+ `Access-Control-Allow-Origin`: リソースにアクセスできるドメインを指定します (この場合、リソースは Amazon EC2 です）。これは常に \* 値で返されます。したがって、Amazon EC2 はクロスドメインオリジンを許可し、Cookie などのブラウザ認証情報を許可しません。
+ `Access-Control-Allow-Credentials`: ブラウザ認証情報を使用して実際のリクエストを行うことができるかどうかを示します。これは返されません。したがって、ブラウザは値を と解釈する必要があります`Access-Control-Allow-Credentials: false`。

## プリフライトリクエスト
<a name="cors-preflight"></a>

リクエストの内容が以下の基準を満たしている場合、リクエストは実際のリクエストを送信するかどうかをチェックします。プリフライトリクエストは、まず `OPTIONS`メソッドを使用して HTTP リクエストをリソース (この場合は Amazon EC2) に送信します。

以下は、プリフライトリクエストを定義する基準です。
+ リクエストは、 `GET`または 以外の HTTP メソッドを使用します`POST`。ただし、 `POST`メソッドを使用する場合、 `Content-Type`は `application/x-www-form-urlencoded`、、`multipart/form-data`または のいずれかではありません`text/plain`。
+ リクエストは、 などのカスタムヘッダーを設定します`X-Other-Header`。

Amazon EC2 CORS 実装では、任意のヘッダーが許可され、実際のリクエストで任意のオリジンが許可されます。

次の情報では、Amazon EC2 へのプリフライトリクエストのリクエストヘッダーについて説明します。

**プリフライトリクエストヘッダー値**
+ `Origin`: リソースへのアクセスを希望するドメインを指定します (この場合、リソースは Amazon EC2)。これは、ブラウザによってクロスオリジンリクエストに挿入されます。
+ `Access-Control-Request-Method`: ブラウザからの実際のリクエストで使用する HTTP メソッド。
+ `Access-Control-Request-Headers`: 実際のクロスオリジンリクエストで送信されるカスタムヘッダー。

以下の情報は、プリフライトリクエスト後に Amazon EC2 が返す (または返さない) レスポンスヘッダーに関する情報です。

**プリフライトレスポンスヘッダー値**
+ `Access-Control-Allow-Origin`: リソースにアクセスできるドメインを指定します (この場合、リソースは Amazon EC2 です）。これは常に \* 値で返されます。したがって、Amazon EC2 はクロスドメインオリジンを許可し、Cookie などのブラウザ認証情報を許可しません。
+ `Access-Control-Allow-Credentials`: ブラウザ認証情報を使用して実際のリクエストを行うことができるかどうかを示します。これは Amazon EC2 によって返されることはありません。したがって、ブラウザは値を と解釈する必要があります`Access-Control-Allow-Credentials: false`。
+ `Access-Control-Expose-Headers`: ヘッダーをブラウザに公開できるようにします。これは Amazon EC2 によって返されることはありません。したがって、リクエスト元のドメインは Amazon EC2 からの戻りヘッダーを読み取ることができません。
+ `Access-Control-Max-Age`: プリフライトリクエスト結果をキャッシュできる期間を指定します。値は 1800 秒 (30 分) に設定されます。
+ `Access-Control-Allow-Methods`: 実際のリクエストを行うときに許可されるメソッドを示します。次のメソッドを使用できます: `GET`、`POST`、`OPTIONS`、`DELETE`、および `PUT`。これは、クエリ API の使用や REST の使用など、Amazon EC2 API の呼び出し方法にも依存します。
+ `Access-Control-Allow-Headers`: 実際のリクエストで使用できるヘッダーを示します。Amazon EC2 は、プリフライトリクエストのすべてのヘッダーを受け入れます。HTTP ヘッダーが実際のリクエストに関連しない場合、それらは無視されます。