ADC

配置命名高级策略表达式

您可以配置命名表达式并随时在策略中使用该表达式时引用该名称,而无需在多个策略中多次重新键入同一表达式。例如,您可以创建以下命名表达式:

  • 这个表达式:

    http.req.body(100).contains("this")

  • 那个表达式:

    http.req.body(100).contains("that")

然后,您可以在策略表达式中使用这些命名表达式。例如,以下是基于上述示例的法律表达式:

这个表达

您可以使用高级策略表达式的名称作为函数的前缀。命名表达式可以是简单表达式或复合表达式。该函数必须是能够对命名表达式返回的数据类型进行操作的函数。

示例 1:作为前缀的简单命名表达式

以下用于标识文本字符串的简单命名表达式可用作 AFTER_STR(“<string>”) 函数的前缀,该函数处理文本数据:

HTTP.REQ.BODY(1000)

如果表达式的名称为 Top1KB,则可以使用 top1KB.AFTER_STR(“用户名”)而不是 HTTP.REQ.BODY (1000) .AFTER_STR(“用户名”)。

示例 2:复合命名表达式作为前缀

您可以创建一个名为 basic_header_value 的复合表达式来连接请求中的用户名、冒号 (:) 和用户的密码,如下所示:

add policy expression basic_header_value "HTTP.REQ.USER.NAME + \":\" + HTTP.REQ.USER.PASSWD"

然后,您可以在重写操作中使用表达式的名称,如以下示例所示:

add rewrite action insert_b64encoded_authorization insert_http_header authorization '"Basic " + basic_header_value.b64encode'

在示例中,在用于构造自定义标头值的表达式中,B64 编码算法应用于复合名为表达式返回的字符串。

您还可以使用命名表达式(单独或作为函数的前缀)在重写中为替换目标创建文本表达式。

使用 CLI 配置命名的高级策略表达式

在命令提示符下,键入以下命令以配置命名表达式并验证配置:

-  add policy expression \<name\>\<value\>

-  show policy expression \<name\>
<!--NeedCopy-->

示例:

> add policy expression myExp "http.req.body(100).contains("the other")"
Done

> show policy expression myExp
    1)      Name: myExp  Expr: "http.req.body(100).contains("the other")"  Hits: 0 Type : ADVANCED
Done
<!--NeedCopy-->

表达式最多可包含 1,499 个字符。

使用 GUI 配置命名表达式

  1. 在导航窗格中,展开 AppExpert,然后单击 表达式
  2. 单击 高级表达式
  3. 单击添加
  4. 输入表达式的名称和描述。
  5. 使用配置 高级策略表达式中描述的过程配置表达式。状态栏中的消息将指示已成功配置策略表达式。
配置命名高级策略表达式