ADC

HTTPコルアウトの呼び出し

HTTPコ,ルアウトを設定したら,デフォルトの構文ポリシ,規則にSYS.HTTP_CALLOUT(<名称>)式を含めることによって,コ,ルアウトを呼び出します。この式では,<名称>は呼び出すHTTPコ,ルアウトの名前です。

コールアウト式とともにデフォルトの構文式演算子を使用して,応答を処理し,適切なアクションを実行できます。HTTPコルアウトエージェントからの応答の戻り値の型によって、応答で使用できる演算子のセットが決まります。分析する応答の一部がテキストの場合は、テキスト演算子を使用して応答を分析できます。たとえば、 次の例のように、CONTAINS () 演算子を使用して、レスポンスの指定した部分に特定の文字列が含まれているかどうかを確認できます。

SYS.HTTP_CALLOUT (mycallout)。contains("正确的IP地址")

応答側ポリシ,で前述の式を使用する場合は,適切な応答側アクションを設定できます。

同様に,評価する応答の一部が数値である場合は,GT(int)などの数値演算子を使用できます。応答にブ,ル値が含まれている場合は,ブ,ル演算子を使用できます。

注:httpコ,ルアウトは,再帰的に自分自身を呼び出すことができます。HTTPコルアウトの再帰を回避するには、HTTP コールアウト式と、再帰を防止するデフォルトの構文式を組み合わせます。HTTP コールアウトの再帰を回避する方法については、「HTTPコ,ルアウトの再帰を回避するを参照してください。

以前に生成されたコールアウトを評価した後にコールアウトを呼び出すポリシーを設定することで,HTTPコールアウトをカスケードすることもできます。このシナリオでは,あるポリシーがコールアウトを呼び出した後,Citrix ADCアプライアンスがコールアウトをコールアウトサーバーに送信する前にコールアウトを解析するときに,2番目のポリシーセットでコールアウトを評価し,追加のコールアウトを呼び出すことができます。このコ,ルアウトは,3番目のポリシ,セットで評価できます。このような実装にいては,次の例で説明します。

まず,myCallout1というHTTPコールアウトを設定してから,応答側ポリシーPol1を設定してmyCallout1を呼び出すことができます。次に2番目のHTTPコールアウトmyCallout2,レスポンダーポリシーPol2を構成できます。Pol2を設定して,myCallout1を評価し,myCallout2を呼び出します。両方のレスポンダポリシをグロバルにバンドします。

HTTPコールアウトの再帰を避けるために,myCallout1には“Request1という一意のカスタムHTTPヘッダーが設定されています。Pol1は,HTTPコ,ルアウトの再帰を避けるように設定されており,デフォルトの構文式

HTTP.REQ.HEADER(“Request1”)。EQ (Callout请求”)自身之外。<!——NeedCopy >

Pol2は同じデフォルトの構文式を使用しますが,。不是演算子は除外されるため,Citrix ADCアプライアンスがmyCallout1を解析するときにポリシーが評価します。myCallout2は“Request2と呼ばれる独自のヘッダーを識別し,Pol2にはmyCallout2が再帰的に呼び出されないようにするためのデフォルトの構文式が含まれています。

> add policy httpCallout myCallout1 Done > set policy httpCallout myCallout1 -IPAddress 10.102.3.95 -port 80 -returnType TEXT -hostExpr ""10.102.3.95"" -urlStemExpr ""/cgi-bin/check_clnt_from_database.pl"" -headers Request1 ("Callout Request") -parameters cip(CLIENT.IP.SRC) -resultExpr "HTTP.RES.BODY(100)"完成>添加响应器策略Pol1 "HTTP.REQ.HEADER("Request1")。EQ (Callout请求”)。不是&& SYS.HTTP_CALLOUT(myCallout1)。包含(“IP匹配”)”RESET Done > bind responder global Pol1 100 END -type OVERRIDE Done > add policy httpCallout myCallout2 Done > set policy httpCallout myCallout2 -IPAddress 10.102.3.96 -port 80 -returnType TEXT -hostExpr ""10.102.3.96"" -urlStemExpr ""/cgi-bin/check_clnt_location_from_database.pl"" -headers Request2 ("Callout Request") -parameters cip(CLIENT.IP.SRC) -resultExpr "HTTP.RES.BODY(200)"完成>添加响应器策略Pol2 "HTTP.REQ.HEADER("Request2")。EQ (Callout请求”)。不是&& HTTP.REQ.HEADER("Request1")。EQ(“Callout请求”)&& SYS.HTTP_CALLOUT(myCallout2)。包含(“亚太地区”)”RESET Done > bind responder global Pol2 110 END -type OVERRIDE Done 
HTTPコルアウトの呼び出し

この記事の概要