HTTP 规则表达式构建器

通过 AND、OR、NOT 和括号分组,可以使用子表达式构建器来根据子表达式构建复杂的规则条件。应用更改时,规则构建器将对规则进行验证。如果找到未配对的括号以及不支持的逻辑运算符,那么将发出警报。

要查看此管理控制台页面,请单击服务器 > 随需应变路由器 > odr_name> HTTP 随需应变路由器属性 > 路由策略 HTTP 规则 > 添加 > 子表达式构建器

要使用规则构建器来修改规则,您必须拥有管理员管理特权。

选择操作数

路由和服务策略操作数

根据所选协议的不同,将显示不同的操作数。下表包括了控制台中显示的操作数名称、表达式中出现的实际操作数、每个操作数的有效协议以及每个操作数的描述。

表 1. 操作数
请求变量 有效协议 描述

application

IIOP 包含 EJB 的企业应用程序的名称。
clienthost

HTTP

SOAP

IIOP

SIP

标准客户机主机名。这是因特网协议(IP)命令主机名的值。此操作数支持 >、>=、< 和 <= 之类的数字运算符。

clientport

IIOP 客户机端口名称。
clientipv4

HTTP

SOAP

SIP

客户机的 IP 地址,使用因特网协议版本 4(IPv4) 点分四段地址类型 n.n.n.n
clientipv6

HTTP

SOAP

SIP

因特网协议版本 6(IPv6)128 位地址类型 x:x:x:x:x:x:x:x,符合客户机的 Request for Comments 1924(RFC 1924)。
Contact header

SIP

“联系人”头字段。

Contact URI

SIP

“联系人”头字段的 URI。

cookie$<name>

HTTP

SOAP

cookie 名称。例如,表达式 cookie$My_Cookie_Name='My_Cookie_Value' 会测试请求,以了解它是否包含名为 My_Cookie_Name 并且值为 My_Cookie_Value 的 cookie。要测试特定 cookie 是否存在,请使用下列其中一个表达式:
cookie$MyCookieName IS NOT NULL 
cookie$MyCookieName IS NULL

ejbmodule

IIOP EJB 的模块名称。

ejbname

IIOP EJB 的名称。

ejbmethod

IIOP EJB 内的方法的名称。
From header

SIP

“源”头字段。

From header display name

SIP

“源”头字段中的显示名称。

From URI

SIP

“源”头字段的 URI。

From URI host

SIP

“源”头字段中的主机。

From URI port

SIP

“源”头字段的 URI 中的端口。

From URI user

SIP

“源”头字段中的用户。

header$<name>

HTTP

SOAP

SIP

头的名称或值。例如,表达式 header$Host='localhost' 会测试请求以了解它是否包含值为 localhost 的 HTTP 主机头。要测试主机头是否存在,请使用下列其中一个表达式:
header$Host IS NOT NULL 
header$Host IS NULL
HTTPMethod

HTTP

SOAP

请求的 HTTP 方法。可能的值包括 POST、GET、PUT 和 DELETE。
MIMEType

HTTP

SOAP

请求的 MIME 类型。
operation SOAP Web service 操作的名称。
percentage$<val>

HTTP

SOAP

IIOP

SIP

百分比操作数对时间的固定百分比求值为 true。例如,percentage$50 对时间的平均值 50% 求值为 true
port

HTTP

SOAP

IIOP

SIP

接收到请求的侦听端口。
protocol

HTTP

SOAP

传送请求的通信协议。当前支持的协议包括 HTTP、HTTPS、SOAP 和 SOAPS。
queryparm$<name>

HTTP

SOAP

头的名称或值。例如,表达式 queryparm$timezone='EST' 测试请求以了解该请求是否包含名为 timezone 并且值为 EST 的 HTTP 查询参数。要测试查询参数是否存在,请使用下列其中一种格式:
queryparm$timezone IS NOT NULL 
queryparm$timezone IS NULL
rampup$<startTime>$<completionTime>

HTTP

SOAP

IIOP

SIP

rampup 操作数对时间的可变百分比求值为 true。它在 <startTime> 之前一直求值为 false,在 <completionTime> 之后一直求值为 true。从 <startTime><completionTime> 的时间内,它对线性增长的百分比求值为 true

<startTime><completionTime> 的格式为 day/month/year::hour:min:sec

其中 day 表示月份中的日期,month 表示月份(Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov 和 Dec),year 是用 4 位数字表示的年份,hour 是用 2 位数字表示的 24 小时制的小时,minsec 分别是用 2 位数字值表示的分钟和秒。

例如,

rampup$01/Jan/2007::08:00:00$01/Jan/2007::17:00:00 开始在 2007 年 1 月 1 日上午 8 点偶然求值为 true,并且在同一天的下午 5 点 ramp up 完成时一直求值为 true
Request transport

SIP

The transport of the request.

Request URI

SIP

请求 URI。

Request URI host

SIP

请求 URI 中的主机。

Request URI port

SIP

请求 URI 中的端口。

Request URI user

SIP

请求 URI 中的用户。

Scheme of From header

SIP

“源”头字段的模式。

Scheme of To header

SIP

“目标”头字段的模式。

Scheme of URI

SIP

URI 的模式。

serverhost

HTTP

SOAP

IIOP

SIP

服务器的标准主机名。此操作数支持 >、>=、< 和 <= 之类的数字运算符。
serveripv4

HTTP

SOAP

SIP

服务器的 IP 地址,使用 IPv4 点分四段地址类型 n.n.n.n
serveripv6

HTTP

SOAP

SIP

IPv6 128 位地址类型 x:x:x:x:x:x:x:x,遵循服务器的 RFC 1924 协议。
service

SOAP

web service 的名称。
SIP 方法

SIP

请求的方法。可能的值包括 INVITE、TRYING、RINGING、ACK、OK 和 BYE。如果消息并非请求,那么此操作数返回 NULL。

响应代码

SIP

响应的响应代码。如果消息并非响应,那么此操作数返回 -1。

time

HTTP

SOAP

IIOP

此操作数用于定义必须处理给定请求的当日的日期和时间。两个可选字段是 StartTime 和 EndTime。如果在该已定义窗口外接收到请求,那么不会处理该请求。

“开始时间和结束时间”字段都必须使用以下格式:dayOfWeek/dayOfMonth/month/year::hour:minute:second

例如,2007 年 4 月 11 日下午 1:03:45 指定为:

Thu/11/Apr/2007::13:03:45

任何字段都可使用值为 * 的通配符。例如,每个月的第一天指定为 */1。

dayofWeek 值为 Sun、Mon、Tue、Wed、Thu、Fri、Sat,而 dayOfMonth 值的范围是 1 到 31。

month 值是表示 12 个月的非数字值:Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov 和 Dec。

year 值由表示年份的四位数字组成。例如,2007。

hour 值是以 24 小时制表示的当天小时。例如,8am 表示为 ::8。minutesecond 是范围在 0 到 59 之间的整数。

正斜杠(/)用来分隔日期参数,双冒号(::)用来分隔日期和时间参数,冒号(:)用来分隔时间参数。请注意,由整个规则的布尔结果(其中使用了 time 操作数)确定所执行的路由操作。

To client host

SIP

“目标”头字段中的客户机主机。

To header

SIP

“目标”头字段。

To header display name

SIP

“目标”头字段中的显示名称。

To URI

SIP

“目标”头字段的 URI。

To URI host

SIP

“目标”头字段的 URI 中的端口。

To URI user

SIP

“目标”头字段中的用户。

virtual host

HTTP

SOAP

虚拟门户网站是在 WebSphere® Portal Server 中创建的,WebSphere Extended Deployment 支持此操作数以便更好地与 WebSphere Portal Server 集成。虚拟端口是请求 URL 减去 WebSphere Portal 应用程序的 Web 模块上下文根后的结果。如果给定的请求与所定义的虚拟门户网站匹配,那么将执行为该规则定义的路由操作。
xpathexpr

SOAP

XPath 字符串表达式具有用于包含 XPath 表达式的必需字段和用于定义局部名称空间的可选字段。如果 XPath 表达式中包含的所有名称空间都是标准名称空间,那么第二个字段是可选字段。如果有多个局部名称空间,那么请使用逗号(,)进行分隔。以下是包含一个局部名称空间定义的 xpathexpr 示例:
xpathexpr$/soap:Envelope/soap:Body/m:getTimeZone/n:clientId$m\\=http://test.classify.ws.ibm.com,n\\=http://test2.classify.ws.ibm.com = \\'1000\\' or operation IS NOT NULL

在先前表达式中,XPath 表达式为 /soap:Envelope/soap:Body/n:getTimeZone/n:clientId。它包含局部名称空间 n。所以,xpathexpr 的第二个字段定义为 n \\=http://test.classify.ws.ibm.com。美元符号($)用于指示字段定义的开始。两个反斜杠在此示例中是转义序列。第一个等号(=)已转义,原因是它包括在局部名称空间定义中,而第二个等号(=)是分类表达式中的运算符,不能进行转义。

以下是包含两个局部名称空间的 xpathexpr 示例:

xpathexpr$/soap:Envelope/soap:Body/m:getTimeZone/n:clientId$m\\=http://test.classify.ws.ibm.com,n\\=http://test2.classify.ws.ibm.com = \\'1000\\' or operation IS NOT NULL

以下是 xpathexpr 的标准名称空间列表:

表 1. 名称空间
名称空间 URL
soap http://schemas.xmlsoap.org/soap/envelope/
soap-env http://schemas.xmlsoap.org/soap/envelope/
soapenc http://schemas.xmlsoap.org/soap/encoding/
soapbind http://schemas.xmlsoap.org/wsdl/soap/
xsd http://www.w3.org/2001/XMLSchema
xsi http://www.w3.org/2001/XMLSchema-instance
xsi http://ws-i.org/schemas/conformanceClaim/
wsdl http://schemas.xmlsoap.org/wsdl/
运算符
  • =:“等于”运算符表示以区分大小写方式进行匹配。
  • <>:“不等于”运算符表示操作数值与输入的值不相等。
  • >:“大于”运算符适用于数字。
  • >= :“大于或等于”运算符适用于数字。
  • < :“小于”运算符适用于数字。
  • <=:“小于或等于”运算符适用于数字。
  • AND:xx AND yy 表示既包含 xx 又包含 yy 的匹配项。
  • BETWEEN:通过将此运算符与 AND 运算符配合使用,可以选择一系列值,包括第一个值(最小值)和最后一个值(最大值)。这两个运算符可以共同对数字和日期执行运算。
  • EXISTS:此布尔运算符对操作数或复合子表达式的结果进行检查,例如,检查某些 HTTP 头元素属性。
  • IN:此运算符表示在单个表达式中包含多个值的操作数。例如,对于名为 port 的操作数,如果要表示端口值可以是任何值或所有值,例如 908090909091,那么表达式片段为 port IN (9080,9090,9091)。括号中值的表示方式取决于端口的数据类型。如果端口是整数,那么正确的语法是一些不带引号的值。如果端口是字符串,那么正确的语法是 port IN ('9080', '9090', '9091')
  • IS NULL:此运算符表示查询验证结果表明所请求的参数不存在。
  • IS NOT NULL:此运算符表示查询验证结果表明所请求的参数存在。
  • LIKE:此运算符表示对字符串操作数值进行模式匹配。在模式匹配的开始位置,值必须包含百分号通配符(%)。例如,表达式 host LIKE %blanca 表示与单词 blanca 或者任何其他以 blanca 结尾的单词匹配;表达式 host LIKE blanca% 表示与单词 blanca 或者任何其他以 blanca 开头的单词匹配;表达式 host LIKE %blanca% 表示与单词 blanca 或者任何嵌入了 blanca 的单词匹配。
  • NOT:对于 NOT xx,此运算符表示未包含 xx 的匹配项。
  • OR:对于 xx OR yy,此运算符表示包含 xxyy 的匹配项。

根据所选运算符的不同,输入要创建的子表达式的值。

生成子表达式

根据已指定的操作数、运算符和值,生成子表达式。

追加

单击以追加至规则面板上的框。




WebSphere Virtual Enterprise 信息中心(在线)

相关信息
路由策略 HTTP 规则

http_rulebuilder_detail