ADC

关于评估 HTTP 和 TCP 负载

HTTP 请求或响应的有效负载由 HTTP 协议信息(如标头、URL、正文内容以及版本和状态信息)组成。配置高级策略表达式以评估 HTTP 负载时,可以使用高级策略表达式前缀和运算符(如有必要)。

例如,如果要确定 HTTP 连接是否包含名为“myHeader”的自定义标头,则可以使用以下表达式,其中包括 http.req.header("<header_name>") 前缀和 exists 运算符:

http.req.header("myHeader").exists

还可以将多个高级策略表达式与布尔运算符和算术运算符结合使用。例如,以下复合表达式可能对各种 NetScaler 功能(例如集成缓存、重写和响应程序)有用。此表达式首先使用 && 布尔运算符来确定 HTTP 连接是否包含值为“text/html”的 Content-Type 标头。“ 如果该操作返回值 FALSE,则表达式将确定 HTTP 连接是包含“传输编码”还是“内容长度”标头。

(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 请求的正文,直至整数参数中指定的字符位置。如果 body 中的字符数少于参数中指定的字符,则返回整个 body。
  • 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")

注意: 您可以将任何文本操作应用于有效负载正文。有关可以应用于文本的操作的信息,请参阅 高级策略表达式:评估文本

关于评估 HTTP 和 TCP 负载