HTTP API の CORS の設定 - Amazon API Gateway

HTTP API の CORS の設定

Cross-origin resource sharing (CORS) は、ブラウザで実行されているスクリプトから開始される HTTP リクエストを制限するブラウザのセキュリティ機能です。API にアクセスできず、Cross-Origin Request Blocked を含むエラーメッセージが表示される場合は、CORS を有効にする必要がある場合があります。詳細については、「CORS とは」を参照してください。

通常、CORS は、異なるドメインまたはオリジンでホストされている API にアクセスするウェブアプリケーションを構築するために必要です。CORS を有効にして、別のドメインでホストされているウェブアプリケーションから API へのリクエストを許可することができます。たとえば、API が https://{api_id}.execute-api.{region}.amazonaws.com/ でホストされていて、example.com でホストされているウェブアプリケーションから API を呼び出す場合、API が CORS をサポートしている必要があります。

API に CORS を設定した場合、API Gateway は API に OPTIONS ルートが設定されていない場合でも、プリフライト OPTIONS リクエストに対するレスポンスを自動的に送信します。CORS リクエストの場合、API Gateway は設定された CORS ヘッダーを、統合からのレスポンスに追加します。

注記

API の CORS を設定する場合、API Gateway はバックエンド統合から返された CORS ヘッダーを無視します。

CORS 設定では、次のパラメータを指定できます。API Gateway HTTP API コンソールを使用してこれらのパラメータを追加するには、値を入力した後に [追加] を選択します。

CORS ヘッダー CORS 設定プロパティ 値の例

Access-Control-Allow-Origin

allowOrigins

  • https://www.example.com

  • * (すべてのオリジンを許可する)

  • https://* (https:// で始まる任意のオリジンを許可する)

  • http://* (http:// で始まる任意のオリジンを許可する)

Access-Control-Allow-Credentials

allowCredentials

true

Access-Control-Expose-Headers

exposeHeaders

日付、x-api-id、*

Access-Control-Max-Age

maxAge

300

Access-Control-Allow-Methods

allowMethods

GET, POST, DELETE , *

Access-Control-Allow-Headers

allowHeaders

Authorization, *

CORS ヘッダーを返すには、リクエストに origin ヘッダーが含まれている必要があります。

CORS 設定は次の例のようになります。

HTTP API の CORS 設定

$default ルートおよびオーソライザーによる HTTP API の CORS の設定

CORS を有効にし、 HTTP API の任意のルートに対して認証を設定できます。$default ルートの CORS および認証を有効にする場合、いくつかの特別な考慮事項があります。$default ルートは、OPTIONS リクエストを含め、明示的に定義していないすべてのメソッドとルートのリクエストをキャッチします。不正な OPTIONS リクエストをサポートするには、認証を必要としない OPTIONS /{proxy+} ルートを API に追加し、ルートに統合をアタッチします。OPTIONS /{proxy+} ルートの優先順位は $default ルートよりも高くなります。その結果、クライアントは認証なしで API に OPTIONS リクエストを送信できます。ルーティングの優先順位の詳細については、「API リクエストのルーティング」を参照してください。

AWS CLI を使用して HTTP API の CORS を設定する

次の update-api コマンドを使用して、https://www.example.com から CORS リクエストを有効にすることができます。

aws apigatewayv2 update-api --api-id api-id --cors-configuration AllowOrigins="https://www.example.com"

詳細については、Amazon API Gateway バージョン 2 API リファレンスの「CORS」を参照してください。