HTTP リクエストまたはレスポンスのペイロードは、ヘッダー、URL、本文コンテンツ、バージョンおよびステータス情報などの HTTP プロトコル情報で構成されます。HTTP ペイロードを評価するように高度なポリシー式を設定する場合は、高度なポリシー式のプレフィックスと、必要に応じて演算子を使用します。
たとえば、HTTP 接続に「myHeader」という名前のカスタムヘッダーが含まれているかどうかを判断する場合は、http.req.header("<header_name>")プレフィックスと exists 演算子を含む次の式を使用します。
http.req.header("myHeader").exists
また、ブール演算子や算術演算子を使用して、複数の高度なポリシー式を組み合わせることもできます。たとえば、次の複合式は、統合キャッシュ、リライト、レスポンダーなどのさまざまなNetScaler機能で役立つ場合があります。この式は、最初に && ブール演算子を使用して、HTTP 接続に「text/html」の値を持つ Content-Type ヘッダーが含まれているかどうかを判断します。その操作が FALSE の値を返す場合、式によって HTTP 接続に「転送エンコーディング」または「Content-Length」ヘッダーのどちらが含まれるかが決まります。
(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")