Citrix ADC

HTTP および TCP ペイロードの評価について

HTTP リクエストまたはレスポンスのペイロードは、ヘッダー、URL、本文コンテンツ、バージョンとステータス情報などの HTTP プロトコル情報で構成されます。HTTP ペイロードを評価するデフォルトの構文式を設定する場合は、デフォルトの構文式プレフィクスと、必要に応じて演算子を使用します。

たとえば、HTTP 接続に「myHeader」という名前のカスタムヘッダーが含まれているかどうかを判断する場合は、http.req.header("<header_name>") プレフィックスと exists 演算子を含む次の式を使用します。

http.req.header("myHeader").exists

複数の詳細ポリシー式を、ブール演算子と算術演算子と組み合わせることもできます。たとえば、次の複合式は、統合キャッシュ、書き換え、レスポンダーなど、Citrix ADC のさまざまな機能で役立ちます。この式は、まず && ブール演算子を使用して、HTTP 接続に「text/html」の値を持つ Content-Type ヘッダーが含まれているかどうかを判断します。その操作が FALSE の値を返す場合、式は HTTP 接続に「転送エンコーディング」または「コンテンツ長」ヘッダーが含まれているかどうかを決定します。

(http.req.header("Content-Type").exists && http.req.header("Content-Type").eq("text/html")) || (http.req.header("Transfer-Encoding").exists) || (http.req.header("Content-Length").exists)

TCP または UDP パケットのペイロードは、パケットのデータ部分です。次のような TCP または UDP パケットの機能を調べるために、高度なポリシー式を設定できます。

  • 送信元ドメインと宛先ドメイン
  • 送信元ポートと宛先ポート
  • ペイロード内のテキスト
  • レコードタイプ

次の式プレフィックスは、ペイロードの本体からテキストを抽出します。

  • HTTP.REQ.BODY(integer)。HTTP リクエストの本文を複数行テキストオブジェクトとして返します。整数引数で指定された文字位置までです。本文に含まれる文字数が引数で指定されている文字数よりも少ない場合は、本文全体が返されます。
  • HTTP.RES.BODY(integer)。HTTP レスポンスボディの一部を返します。返されるテキストの長さは、整数引数の数値と等しくなります。本文内の文字数が整数で指定されている文字数よりも少ない場合は、本文全体が返されます。
  • CLIENT.TCP.PAYLOAD(integer)。TCP ペイロードデータを文字列として返します。ペイロードの最初の文字から始まり、整数引数の文字数を継続します。

以下は、1024バイトの応答本文に文字列「https」が含まれており、この文字列は「開始文字列」の後に文字列「終了文字列」の前に発生した場合、TRUEと評価される例です。

http.res.body(1024).after_str("start_string").before_str("end_string").contains("https")

注: ペイロード本文には任意のテキスト操作を適用できます。テキストに適用できる操作については、高度なポリシー式:テキストの評価を参照してください。

HTTP および TCP ペイロードの評価について