ヘッダーの設定

適用対象: すべての API Management レベル

set-header ポリシーでは、既存の HTTP 応答ヘッダーまたは要求ヘッダーに値を割り当てるか、新しい応答ヘッダーまたは要求ヘッダーを追加します。

ポリシーを使用して、HTTP ヘッダーの一覧を HTTP メッセージに挿入します。 受信パイプラインに配置した場合、このポリシーは、ターゲット サービスに渡される要求の HTTP ヘッダーを設定します。 送信パイプラインに配置した場合、このポリシーは、ゲートウェイのクライアントに送信される応答の HTTP ヘッダーを設定します。

Note

ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 このポリシーの構成に役立つ、ガイド付きのフォーム ベース エディターがポータルに用意されています。 API Management ポリシーを設定または編集する方法について説明します。

ポリシー ステートメント

<set-header name="header name" exists-action="override | skip | append | delete">
    <value>value</value> <!--for multiple headers with the same name add additional value elements-->
</set-header>

属性

Name 説明 必要 Default
exists-action 対象のヘッダーが既に指定されている場合の操作を指定します。 この属性の値は次のいずれかに設定する必要があります。

- override - 既存のヘッダーの値を置き換えます。
- skip - 既存のヘッダーの値を置き換えません。
- append - 既存のヘッダーの値に値を追加します。
- delete - 要求からヘッダーを削除します。

override に設定した場合、同じ名前の複数のエントリを記載すると、すべてのエントリに従ってヘッダーが設定されます (複数回記載されます)。結果に設定されるのは記載した値のみです。

ポリシー式を使用できます。
いいえ override
name 設定するヘッダーの名前を指定します。 ポリシー式を使用できます。 はい 該当なし

要素

名前 説明 必須
value 設定するヘッダーの値を指定します。 ポリシー式を使用できます。 同じ名前のヘッダーが複数ある場合は、value 要素をさらに追加します。 いいえ

使用法

使用上の注意

ヘッダーの複数の値が次のように CSV 文字列に連結されます。

headerName: value1,value2,value3

例外として、次のような値を持つ標準化されたヘッダーがあります。

  • コンマを含む可能性がある (User-AgentWWW-AuthenticateProxy-Authenticate)
  • 日付を含む可能性がある (CookieSet-CookieWarning)。
  • 日付を含む (DateExpiresIf-Modified-SinceIf-Unmodified-SinceLast-ModifiedRetry-After)。

これらの例外の場合は、複数のヘッダー値が 1 つの文字列に連結されることはなく、次のように個別のヘッダーとして渡されます。例:

User-Agent: value1
User-Agent: value2
User-Agent: value3

次の制限事項が適用されます。

  • Server ヘッダーの削除はサポートされていません。
  • ヘッダー: ConnectionContentLengthKeepAliveTransferEncoding は変更または削除できません。

ヘッダーの追加、既存のオーバーライド

<set-header name="some header name" exists-action="override">
    <value>20</value>
</set-header>

ヘッダーの削除

 <set-header name="some header name" exists-action="delete" />

バックエンド サービスにコンテキスト情報を転送する

次の例では、API レベルでポリシーを適用して、バックエンド サービスにコンテキスト情報を提供する方法を示します。

<!-- Copy this snippet into the inbound element to forward some context information, user id and the region the gateway is hosted in, to the backend service for logging or evaluation -->
<set-header name="x-request-context-data" exists-action="override">
  <value>@(context.User.Id)</value>
  <value>@(context.Deployment.Region)</value>
</set-header>

詳細については、ポリシー式およびコンテキスト変数に関する各ページを参照してください。

ポリシーに対する処理の詳細については、次のトピックを参照してください。