This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已经过机器动态翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
이 콘텐츠는 동적으로 기계 번역되었습니다. 책임 부인
Este texto foi traduzido automaticamente. (Aviso legal)
Questo contenuto è stato tradotto dinamicamente con traduzione automatica.(Esclusione di responsabilità))
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.책임 부인
Este artigo foi traduzido automaticamente.(Aviso legal)
这篇文章已经过机器翻译.放弃
Questo articolo è stato tradotto automaticamente.(Esclusione di responsabilità))
Translation failed!
关于文本表达式
您可以配置各种表达式来处理流经 Citrix ADC 设备的文本。下面是如何使用默认语法表达式解析文本的一些示例:
-
确定是否存在特定 HTTP 标头。
例如,您可能需要标识包含特定接受语言标头的 HTTP 请求,以便将请求引导到特定服务器。
-
确定特定 HTTP URL 包含特定字符串。
例如,您可能希望阻止特定 URL 的请求。请注意,字符串可能出现在另一个字符串的开头、中间或结尾处。
-
标识定向到特定应用程序的 POST 请求。
例如,您可能需要标识定向到数据库应用程序的所有 POST 请求,以刷新缓存的应用程序数据。
请注意,有专门的工具可用于查看 HTTP 请求和响应的数据流。您可以使用这些工具查看数据流。
关于文本操作
基于文本的表达式至少由一个前缀组成,用于标识数据元素,并且通常(尽管并不总是)对该前缀执行操作。基于文本的操作可以应用于请求或响应的任何部分。对文本的基本操作包括各种类型的字符串匹配。
例如,以下表达式将标头值与字符串进行比较:
http.req.header("myHeader").contains("some-text")
以下表达式是在请求中匹配文件类型的示例:
http.req.url.suffix.contains("jpeg")
http.req.url.suffix.eq("jpeg")
在上述示例中,包含运算符允许部分匹配,eq 运算符会查找精确匹配。
其他操作可用于在评估字符串之前格式化字符串。例如,您可以使用文本操作去除引号和空格、将字符串转换为全部小写或连接字符串。
注意:
复杂的操作可用于基于模式执行匹配或将一种类型的文本格式转换为另一种类型。
有关详细信息,请参阅以下主题:
文本表达式中的混合和优先级
您可以应用各种运算符来组合文本前缀或表达式。例如,以下表达式连接每个前缀的返回值:
http.req.hostname + http.req.url
下面是使用逻辑 AND 的复合文本表达式的示例。要使请求与表达式匹配,此表达式的两个组件必须为 TRUE:
http.req.method.eq(post) && http.req.body(1024).startswith("destination=")
注意:
有关复合运算符的详细信息,请参阅 复合高级表达式。
文本表达式的类别
可以配置的文本表达式的主要类别为:
-
HTTP 标头、HTTP URL 和 HTTP 请求中的 POST 正文中的信息。
有关详细信息,请参阅 HTTP 请求和响应中文本的表达式前缀。
-
有关 VPN 或无客户端 VPN 的信息。
有关详细信息,请参 阅 VPN 和无客户端 VPN 的表达式前缀。
-
TCP 有效负载信息。
有关 TCP 有效负载表达式的更多信息,请参阅 高级策略表达式:解析 HTTP、TCP 和 UDP 数据。
-
安全套接字层 (SSL) 证书中的文本。
有关 SSL 和 SSL 证书数据的文本表达式的信息,请参阅 高级策略表达式:解析 SSL 证书 和 SSL 证书日期的表达式。
注意:
解析文档正文(如 POST 请求的正文)可能会影响性能。您可能需要测试评估文档正文的策略的性能影响。
文本表达式指南
从性能的角度来看,通常最好在表达式中使用协议感知函数。例如,以下表达式使用了协议感知函数:
HTTP.REQ.URL.QUERY
上一个表达式比以下基于字符串解析的等效表达式更好:
HTTP.REQ.URL.AFTER_STR("?")
在第一种情况下,表达式专门查看 URL 查询。在第二种情况下,表达式扫描数据是否首次出现问号。
文本的结构化解析也具有性能优势,如以下表达式所示:
HTTP.REQ.HEADER("Example").TYPECAST_LIST_T(',').GET(1)
(有关打字转换的更多信息,请参阅 打字转换数据。类型转换表达式收集逗号分隔的数据并将其结构化为列表,通常比以下非结构化等效表达式更好:
HTTP.REQ.HEADER("Example").AFTER_STR(",").BEFORE_STR(",")
最后,非结构化文本表达式通常比正则表达式具有更好的性能。例如,下面是非结构化文本表达式:
HTTP.REQ.HEADER("Example").AFTER_STR("more")
前面的表达式通常比以下使用正则表达式的等效表达式提供更好的性能:
HTTP.REQ.HEADER("Example").AFTER_REGEX(re/more/)
有关正则表达式的更多信息,请参阅 正则表达式。
共享
共享
This Preview product documentation is Cloud Software Group Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Cloud Software Group Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Cloud Software Group product purchase decisions.
If you do not agree, select I DO NOT AGREE to exit.