API Gateway で HTTP API の CORS を設定する - Amazon API Gateway

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 ヘッダーが含まれている必要があります。OPTIONS メソッドの場合、リクエストには origin ヘッダーと Access-Control-Request-Method ヘッダーが含まれている必要があります。

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」を参照してください。