オリジン間リソース共有 (CORS) は、ブラウザを通じて外部のオリジンが API リソースにアクセスできるかどうかを制御します。Cloud-native API Gateway は、許可されたオリジン、HTTP メソッド、ヘッダーを制限できるルートレベルの CORS ポリシーをサポートしています。
手順
-
Cloud-native API Gateway は、CORS ポリシーを設定するための 2 つの方法を提供します。
インスタンス外の API
-
Cloud-native API Gateway コンソールにログインします。左側メニューで [API] を選択し、リージョンを選択します。
-
対象の API をクリックし、インスタンスのドロップダウンリストから、対象のインスタンスまたは すべてのインスタンス を選択します。
-
Routes リストから、対象のルートを選択します。
インスタンス内の API
-
クラウドネイティブ API ゲートウェイコンソールにログインします。左側のナビゲーションウィンドウで、インスタンス を選択し、リージョンを選択します。
-
インスタンス ページで、対象のインスタンスをクリックします。左側のナビゲーションペインで、[API] を選択し、対象の API をクリックします。
-
Routes リストから対象のルートを選択します。
-
-
Configure Policy タブをクリックし、Inbound Processing セクションで[ポリシー/プラグインの有効化]をクリックします。
-
[CORS] カードをクリックします。 「ポリシーの追加: CORS」パネルでパラメーターを設定し、Add をクリックします。
説明CORS ポリシーは、モックサービスには適用されません。テストには実際のバックエンドサービスを使用してください。
パラメータ
説明
[Enable]
Enable スイッチをオンにします。
-
有効:指定されたサードパーティのオリジンが、ブラウザを通じてサーバーリソースにアクセスできます。
-
無効:サードパーティのオリジンは、ブラウザを通じてサーバーリソースにアクセスできません。
[Allowed Origins]
サーバーリソースへのアクセスが許可されたオリジンです。サポートされている形式:
-
すべてのオリジン:
* -
ワイルドカードサブドメインマッチ:
*.example.com -
複数の特定のオリジン: 各オリジンを 1 行に 1 つずつ入力し、
http://またはhttps://で始めます。
説明Access-Control-Allow-Originヘッダーにマッピングされます。 リクエストのOriginが許可されたオリジンと一致する場合、レスポンスのAccess-Control-Allow-OriginヘッダーはそのOriginの値を返します。[Allowed Methods]
クロスオリジンリクエストで許可される HTTP メソッドです。一般的なメソッド: GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH
説明Access-Control-Allow-Methods ヘッダーにマッピングされます。
[Allowed Request Headers]
クロスオリジンリクエストで許可される非標準のリクエストヘッダーです。
-
すべてのヘッダー:
* -
複数の特定のヘッダー: 各ヘッダー名を 1 行に 1 つずつ入力します。
説明Access-Control-Allow-Headers ヘッダーにマッピングされます。
[Allowed Response Headers]
クライアント側のスクリプトに公開されるレスポンスヘッダーです。
-
すべてのヘッダー:
* -
複数の特定のヘッダー: 各ヘッダー名を 1 行に 1 つずつ入力します。
説明Access-Control-Expose-Headers ヘッダーにマッピングされます。
[Allow to Carry Credentials]
クロスオリジンリクエストに認証情報 (Cookie、HTTP 認証) を含めることができるかどうかを指定します。
説明Access-Control-Allow-Credentials ヘッダーにマッピングされます。
[Precheck Expiration Time]
単純でないリクエストの場合、ブラウザがプリフライト (OPTIONS) レスポンス結果をキャッシュできる期間 (秒単位) です。
説明Access-Control-Max-Age ヘッダーにマッピングされます。
-
検証
-
テストリクエストを送信します:
curl -I -H "Origin: http://example.com" -H "Access-Control-Request-Method: GET" -H 'Host: www.test.com' -X OPTIONS http://121.196.XX.XX/demo/item/list -
期待される出力:
HTTP/1.1 200 OK allow: GET,HEAD,OPTIONS x-content-type-options: nosniff x-xss-protection: 1; mode=block cache-control: no-cache, no-store, max-age=0, must-revalidate pragma: no-cache expires: 0 x-frame-options: DENY content-length: 0 date: Tue, 30 Nov 2021 03:20:31 GMT x-envoy-upstream-service-time: 6 access-control-allow-origin: http://example.com access-control-allow-credentials: true access-control-allow-methods: GET,POST,PUT,DELETE,HEAD,OPTIONS access-control-expose-headers: * server: istio-envoy
関連ドキュメント
MDN で CORS の詳細をご確認ください。