HTTP コールアウトの再帰を回避
NetScalerアプライアンスはHTTPコールアウトリクエストの有効性をチェックしませんが、リクエストをHTTPコールアウトエージェントに送信する前にリクエストを一度解析します。この解析により、アプライアンスはコールアウトリクエストを他の着信リクエストと同様に扱うことができるため、コールアウトリクエストを処理するようにいくつかの便利なNetScaler機能(統合キャッシュなど)を構成できます。
ただし、この解析中、HTTP コールアウト要求は同じポリシーを選択し、それ自体を再帰的に呼び出すことができます。アプライアンスは再帰呼び出しを検出し、未定義(UNDEF)条件を発生させます。ただし、再帰呼び出しにより、ポリシーおよび HTTP コールアウト選択カウンタは、それぞれ 1 カウントではなく、2 カウントずつ増加します。
コールアウトが自身を呼び出さないようにするには、HTTPコールアウト・リクエストの一意の特性を少なくとも1つ特定し、この特性を持つすべてのリクエストを、コールアウトを呼び出すポリシールールによって処理されないようにする必要があります。そのためには、ポリシールールに別の Advanced ポリシー式を含めます。SYS.HTTP_CALLOUT(<name>)式は、コールアウト式が評価される前に評価されるように、式の前に式を付ける必要があります。例:
<Expression that prevents callout recursion> OR SYS.HTTP_CALLOUT(<name>) <!--NeedCopy-->
この方法でポリシールールを設定すると、アプライアンスが要求を生成して解析すると、複合ルールは FALSE と評価され、コールアウトは 2 回目に生成されず、選択カウンタが正しく増分されます。
HTTP コールアウト要求に一意の特性を割り当てる 1 つの方法は、コールアウトを設定するときに一意のカスタム HTTP ヘッダーを含めることです。以下は、「MyCallout」と呼ばれる HTTP コールアウトの例です。コールアウトは、クライアントの IP アドレスがブラックリストに登録された IP アドレスのデータベースに存在するかどうかをチェックする HTTP 要求を生成します。コールアウトには「Request」というカスタムヘッダーが含まれ、値「Callout Request」に設定されています。グローバルにバインドされたレスポンダーポリシー「Pol1」は HTTP コールアウトを呼び出しますが、Request ヘッダーがこの値に設定されているすべてのリクエストを除外します。これにより、myCallout の 2 回目の呼び出しが防止されます。2回目の呼び出しを防ぐ式は、HTTP.REQ.HEADER(“Request”).EQ(“Callout Request”).NOTです。
例:
> add policy httpCallout myCallout Done > set policy httpCallout myCallout -IPAddress 10.102.3.95 -port 80 -returnType TEXT -hostExpr ""10.102.3.95"" -urlStemExpr ""/cgi-bin/check_clnt_from_database.pl"" -headers Request("Callout Request") -parameters cip(CLIENT.IP.SRC) -resultExpr "HTTP.RES.BODY(100)" Done > add responder policy Pol1 "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(myCallout).CONTAINS("IP Matched")" RESET Done > bind responder global Pol1 100 END -type OVERRIDE Done <!--NeedCopy-->
注: リクエスト URL に HTTP コールアウト用に設定されたステム式が含まれているかどうかを確認する式を設定することもできます。このソリューションを実装するには、HTTP コールアウトエージェントが HTTP コールアウトにのみ応答でき、アプライアンスを介して送信される他の要求には応答できないようにします。HTTP コールアウトエージェントが他のクライアント要求を処理するアプリケーションまたは Web サーバーである場合、そのような式により、アプライアンスはそれらのクライアント要求を処理できません。代わりに、前述のように一意のカスタムヘッダーを使用します。
このコンテンツの正式なバージョンは英語で提供されています。Cloud Software Groupドキュメントのコンテンツの一部は、お客様の利便性のみを目的として機械翻訳されています。Cloud Software Groupは機械翻訳されたコンテンツを管理していないため、誤り、不正確な情報、不適切な用語が含まれる場合があります。英語の原文から他言語への翻訳について、精度、信頼性、適合性、正確性、またはお使いのCloud Software Group製品またはサービスと機械翻訳されたコンテンツとの整合性に関する保証、該当するライセンス契約書またはサービス利用規約、あるいはCloud Software Groupとのその他すべての契約に基づき提供される保証、および製品またはサービスのドキュメントとの一致に関する保証は、明示的か黙示的かを問わず、かかるドキュメントの機械翻訳された範囲には適用されないものとします。機械翻訳されたコンテンツの使用に起因する損害または問題について、Cloud Software Groupは責任を負わないものとします。
DIESER DIENST KANN ÜBERSETZUNGEN ENTHALTEN, DIE VON GOOGLE BEREITGESTELLT WERDEN. GOOGLE LEHNT JEDE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG IN BEZUG AUF DIE ÜBERSETZUNGEN AB, EINSCHLIESSLICH JEGLICHER GEWÄHRLEISTUNG DER GENAUIGKEIT, ZUVERLÄSSIGKEIT UND JEGLICHER STILLSCHWEIGENDEN GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN DRITTER.
CE SERVICE PEUT CONTENIR DES TRADUCTIONS FOURNIES PAR GOOGLE. GOOGLE EXCLUT TOUTE GARANTIE RELATIVE AUX TRADUCTIONS, EXPRESSE OU IMPLICITE, Y COMPRIS TOUTE GARANTIE D'EXACTITUDE, DE FIABILITÉ ET TOUTE GARANTIE IMPLICITE DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON.
ESTE SERVICIO PUEDE CONTENER TRADUCCIONES CON TECNOLOGÍA DE GOOGLE. GOOGLE RENUNCIA A TODAS LAS GARANTÍAS RELACIONADAS CON LAS TRADUCCIONES, TANTO IMPLÍCITAS COMO EXPLÍCITAS, INCLUIDAS LAS GARANTÍAS DE EXACTITUD, FIABILIDAD Y OTRAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN EN PARTICULAR Y AUSENCIA DE INFRACCIÓN DE DERECHOS.
本服务可能包含由 Google 提供技术支持的翻译。Google 对这些翻译内容不做任何明示或暗示的保证,包括对准确性、可靠性的任何保证以及对适销性、特定用途的适用性和非侵权性的任何暗示保证。
このサービスには、Google が提供する翻訳が含まれている可能性があります。Google は翻訳について、明示的か黙示的かを問わず、精度と信頼性に関するあらゆる保証、および商品性、特定目的への適合性、第三者の権利を侵害しないことに関するあらゆる黙示的保証を含め、一切保証しません。
ESTE SERVIÇO PODE CONTER TRADUÇÕES FORNECIDAS PELO GOOGLE. O GOOGLE SE EXIME DE TODAS AS GARANTIAS RELACIONADAS COM AS TRADUÇÕES, EXPRESSAS OU IMPLÍCITAS, INCLUINDO QUALQUER GARANTIA DE PRECISÃO, CONFIABILIDADE E QUALQUER GARANTIA IMPLÍCITA DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO E NÃO INFRAÇÃO.