リクエストがクラウドネイティブゲートウェイを通過する際、バックエンドサービスに到達する前、またはレスポンスがクライアントに戻る前に、HTTP ヘッダーを挿入、書き換え、または削除する必要がある場合があります。Microservices Engine (MSE) のヘッダー設定ポリシーを使用すると、アプリケーションコードを変更することなく、ルートレベルでリクエストとレスポンスの両方に対してヘッダーを追加、変更、または削除できます。
前提条件
開始する前に、以下があることを確認してください。
少なくとも 1 つのルーティングルールを持つ MSE クラウドネイティブゲートウェイ
アクションタイプの動作
各アクションタイプは、既存のヘッダーを異なる方法で処理します。ユースケースに基づいてアクションタイプを選択してください。
| アクションタイプ | 動作 | ユースケース |
|---|---|---|
| 追加 | ヘッダーに値を追加します。同じキーを持つヘッダーがすでに存在する場合、新しい値は既存の値にコンマ (,) で区切られて連結されます。 | 既存の値に加えて、カスタムトラッキングヘッダーを追加します。 |
| 変更 | ヘッダーを指定された値に設定します。ヘッダーが存在しない場合は作成されます。ヘッダーがすでに存在する場合は、既存の値が上書きされます。 | ヘッダーの有無にかかわらず、特定の Content-Type を強制するか、トレース ID を挿入します。 |
| 削除 | リクエストまたはレスポンスから指定されたヘッダーを削除します。 | アップストリームサービスに転送する前に、内部認証トークンまたはデバッグヘッダーを削除します。 |
ヘッダー設定ポリシーの作成
MSE コンソールにログインします。上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[クラウドネイティブゲートウェイ] > [ゲートウェイ] を選択します。ゲートウェイの名前をクリックします。
左側のナビゲーションウィンドウで、[ルート] をクリックし、次に [ルート] タブをクリックします。
対象のルーティングルールを見つけ、操作 列の Policies をクリックします。
Policies タブの左側のナビゲーションウィンドウで、[ヘッダー] をクリックします。[ヘッダーの編集] タブで、
または Add Rule をクリックします。次のパラメーターを設定し、右上隅にあるSave をクリックします。
パラメーター 説明 Header Type リクエストヘッダーを変更する場合は Request を、レスポンスヘッダーを変更する場合は Response を選択します。 Action Type Add、Modify、または Delete を選択します。 各操作タイプの詳細な動作については、「操作タイプの動作」をご参照ください。 Header Key ヘッダー名 (例: X-Request-IDやCache-Control) を指定します。Header Value リクエストまたはレスポンスにおけるヘッダーの値を指定します。 ポリシーを有効化するには、Enable トグルをオンにします。
説明トグルがオフの場合、ゲートウェイはこのポリシーで定義されたヘッダー変更を適用しません。
結果の確認
次の例は、test: demo レスポンスヘッダーの追加を示しています。

ゲートウェイのイングレス IP アドレスにリクエストを送信します。
<gateway-ingress-ip>をゲートウェイの実際のイングレス IP アドレスに置き換えてください。curl -I http://<gateway-ingress-ip>/demo/item/listレスポンスに
test: demoヘッダーが含まれていることを確認します。test: demoの行は、ヘッダー設定ポリシーが機能していることを確認します。HTTP/1.1 200 OK 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-type: application/json content-length: 86 date: Tue, 30 Nov 2021 03:03:04 GMT x-envoy-upstream-service-time: 4 test: demo server: istio-envoy
適用シナリオ
次の表は、一般的なヘッダー操作シナリオと、それぞれの推奨される構成を示しています。
| シナリオ | ヘッダータイプ | アクションタイプ | ヘッダーキー | ヘッダー値 |
|---|---|---|---|---|
| レスポンスに CORS ヘッダーを追加 | レスポンス | 変更 | Access-Control-Allow-Origin | * |
| リクエストにトレース ID を挿入 | リクエスト | 変更 | X-Request-ID | <trace-id> |
| 転送前に内部ヘッダーを削除 | リクエスト | 削除 | X-Internal-Debug | -- |
| リクエストにルーティングタグを追加 | リクエスト | 追加 | X-Route-Tag | canary |