View a markdown version of this page

クロスオリジンリソース共有のサポートと Amazon EC2 - Amazon Elastic Compute Cloud

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

クロスオリジンリソース共有のサポートと Amazon EC2

Amazon EC2 API は、Cross-Origin Resource Sharing (CORS) をサポートしています。CORS は、あるドメインにロードされたクライアントウェブアプリケーションが別のドメインのリソースとやり取りする方法を定義します。詳細については、「Cross-Origin Resource Sharing W3C Recommendation」を参照してください。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 リクエストの署名を参照してください。

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

CORS の詳細と仕組みの例については、Mozilla デベロッパーネットワークの記事「HTTP アクセスコントロール (CORS)」を参照してください。

シンプルなリクエスト

以下は、単純なリクエストまたは実際のリクエストを定義する基準です。

  • リクエストは 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

プリフライトリクエスト

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

以下は、プリフライトリクエストを定義する基準です。

  • リクエストは、 GETまたは 以外の HTTP メソッドを使用しますPOST。ただし、 POSTメソッドを使用する場合、 Content-Typeapplication/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: 実際のリクエストを行うときに許可されるメソッドを示します。次のメソッドを使用できます: GETPOSTOPTIONSDELETE、および PUT。これは、クエリ API の使用や REST の使用など、Amazon EC2 API の呼び出し方法にも依存します。

  • Access-Control-Allow-Headers: 実際のリクエストで使用できるヘッダーを示します。Amazon EC2 は、プリフライトリクエストのすべてのヘッダーを受け入れます。HTTP ヘッダーが実際のリクエストに関連しない場合、それらは無視されます。