ADC
感谢您提供反馈

这篇文章已经过机器翻译.放弃

调用 HTTP 标注

配置 HTTP 标注后,可以通过在高级策略规则中包含 SYS.HTTP_CALLOUT(<name>) 表达式来调用标注。在此表达式中, <name> 是要调用的 HTTP 标注的名称。

您可以将高级策略表达式运算符与标注表达式结合使用,以处理响应,然后执行适当的操作。来自 HTTP callout Agent 的响应的返回类型决定了可用于响应的运算符集。如果要分析的响应部分是文本,则可以使用文本运算符来分析响应。例如,您可以使用 CONTAINS(<string>) 运算符检查响应的指定部分是否包含特定的字符串,如以下示例所示:

SYS.HTTP_CALLOUT(mycallout).contains("Good IP address")

如果在响应程序策略中使用上述表达式,则可以配置适当的响应程序操作。

同样,如果要评估的响应部分是数字,则可以使用 GT (int) 之类的数字运算符。如果响应包含布尔值,则可以使用布尔运算符。

注意:HTTP 标注可以递归地调用自身。通过将 HTTP 标注表达式与防止递归的高级策略表达式结合起来,可以避免 HTTP 标注递归。有关如何避免 HTTP 标注递归的信息,请参阅 避免 HTTP 标注递归

您还可以通过配置策略,每个策略在评估之前生成的标注后调用一个标注,来级联 HTTP 标注。在这种情况下,在一个策略调用标注之后,当 NetScaler 设备在将标注发送到标注服务器之前解析标注时,第二组策略可以评估标注并调用其他标注,然后可以通过第三组策略进行评估,依此类推。下面的示例描述了这样的实现。

首先,您可以配置名为 myCallout1 的 HTTP 标注,然后配置响应程序策略 Pol1 来调用 myCallout1。然后,您可以配置第二个 HTTP 标注 myCallout2 和响应程序策略 Pol2。您可以将 Pol2 配置为评估 myCallout1 并调用 myCallout2。您可以全局绑定两个响应程序策略。

为避免 HTTP 标注递归,myCallout1 配置了一个名为“Request1”的唯一自定义 HTTP 标头。“ Pol1 配置为通过使用高级策略表达式避免 HTTP 标注递归,

HTTP.REQ.HEADER("Request1").EQ("Callout Request").NOT.

Pol2 使用相同的高级策略表达式,但不包括 .NOT 运算符,以便该策略在 NetScaler 设备解析 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)" Done > add responder policy Pol1 "HTTP.REQ.HEADER("Request1").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(myCallout1).CONTAINS("IP Matched")" 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)" Done > add responder policy Pol2 "HTTP.REQ.HEADER("Request2").EQ("Callout Request").NOT && HTTP.REQ.HEADER("Request1").EQ("Callout Request") && SYS.HTTP_CALLOUT(myCallout2).CONTAINS ("APAC")" RESET Done > bind responder global Pol2 110 END -type OVERRIDE Done
本内容的正式版本为英文版。部分 Cloud Software Group 文档内容采用了机器翻译,仅供您参考。Cloud Software Group 无法控制机器翻译的内容,这些内容可能包含错误、不准确或不合适的语言。对于从英文原文翻译成任何其他语言的内容的准确性、可靠性、适用性或正确性,或者您的 Cloud Software Group 产品或服务沿用了任何机器翻译的内容,我们均不作任何明示或暗示的保证,并且适用的最终用户许可协议或服务条款或者与 Cloud Software Group 签订的任何其他协议(产品或服务与已进行机器翻译的任何文档保持一致)下的任何保证均不适用。对于因使用机器翻译的内容而引起的任何损害或问题,Cloud Software Group 不承担任何责任。
调用 HTTP 标注