Citrix ADC

テキスト式について

Citrix ADCアプライアンスを流れるテキストを操作するためのさまざまな式を構成できます。次に、高度なポリシー式を使用してテキストを解析する方法の例をいくつか示します。

  • 特定の HTTP ヘッダーが存在することを確認します。

    たとえば、リクエストを特定のサーバーに送信するために、特定の Accept-Language ヘッダーを含む HTTP リクエストを識別できます。

  • 特定の HTTP URL に特定の文字列が含まれていることを判別します。

    たとえば、特定の URL に対するリクエストをブロックしたい場合があります。文字列は、別の文字列の先頭、中間、または末尾に出現する可能性があることに注意してください。

  • 特定のアプリケーションに送信される POST 要求を識別します。

    たとえば、キャッシュされたアプリケーションデータを更新する目的で、データベースアプリケーションに送信されるすべての POST 要求を識別できます。

HTTP リクエストとレスポンスのデータストリームを表示するための専用ツールがあることに注意してください。これらのツールを使用して、データストリームを表示できます。

テキストに対する操作について

テキストベースの式は、データの要素を識別するための少なくとも 1 つの接頭辞と、通常はその接頭辞に対する操作 (必ずしもそうではありませんが) で構成されます。テキストベースの操作は、リクエストまたはレスポンスの任意の部分に適用できます。テキストに対する基本的な操作には、さまざまなタイプの文字列一致が含まれます。

たとえば、次の式はヘッダー値と文字列を比較します。

http.req.header("myHeader").contains("some-text")

次の式は、リクエストでファイルタイプを照合する例です。

http.req.url.suffix.contains("jpeg")

http.req.url.suffix.eq("jpeg")

前の例では、contains 演算子は部分一致を許可し、eq 演算子は完全一致を検索します。

評価する前に文字列を書式設定する他の操作も利用できます。たとえば、テキスト操作を使用して、引用符や空白を取り除いたり、文字列をすべて小文字に変換したり、文字列を連結したりできます。

注意:パターンに基づいてマッチングを実行したり、あるタイプのテキストフォーマットを別のタイプに変換したりするには、

複雑な操作を使用できます。

詳しくは、次のトピックを参照してください:

テキスト式の複合と優先順位

さまざまな演算子を適用して、テキストの接頭辞または式を組み合わせることができます。たとえば、次の式は、各プレフィクスの戻り値を連結します。

http.req.hostname + http.req.url

次に、論理 AND を使用する複合テキスト式の例を示します。この式の両方のコンポーネントは、式と一致する要求に対して TRUE である必要があります。

http.req.method.eq(post) && http.req.body(1024).startswith("destination=")

メモ:

コンパウンドの演算子の詳細については、「 複合高度なエクスプレッション」を参照してください。

テキスト式のカテゴリ

設定できるテキスト式の主なカテゴリは次のとおりです。

注:

POSTリクエストの本文などのドキュメント本体を解析すると、パフォーマンスに影響を与える可能性があります。ドキュメント本文を評価するポリシーのパフォーマンスへの影響をテストできます。

テキスト式のガイドライン

パフォーマンスの観点からは、通常、式でプロトコル対応関数を使用するのが最善です。たとえば、次の式はプロトコル対応関数を使用します。

HTTP.REQ.URL.QUERY

前の式は、文字列解析に基づく次の同等の式よりも優れたパフォーマンスを発揮します。

HTTP.REQ.URL.AFTER_STR("?")

最初のケースでは、式は具体的に URL クエリを参照します。2 番目のケースでは、式は疑問符が最初に出現するデータをスキャンします。

また、次の式のように、テキストの構造化解析によるパフォーマンス上の利点もあります。

HTTP.REQ.HEADER("Example").TYPECAST_LIST_T(',').GET(1)

(型キャストの詳細については、 データの型キャストを参照してください。カンマ区切りのデータを収集してリストに構造化する型キャスト式は、通常、次の非構造化同等のものよりも優れています。

HTTP.REQ.HEADER("Example").AFTER_STR(",").BEFORE_STR(",")

最後に、非構造化テキスト式は通常、正規表現よりもパフォーマンスが優れています。たとえば、次に示すのは非構造化テキスト式です。

HTTP.REQ.HEADER("Example").AFTER_STR("more")

前の式は、通常、正規表現を使用する次の同等のものよりも優れたパフォーマンスを提供します。

HTTP.REQ.HEADER("Example").AFTER_REGEX(re/more/)

正規表現の詳細については、「 正規表現」を参照してください。

テキスト式について