附录 A. 参考资料
A.1. 提供的 Undertow 处理程序
若要获得处理程序的完整列表,您必须在与 JBoss EAP 安装中的 Undertow 核心匹配的版本中检查 Undertow 核心的源 JAR 文件。您可以从 JBoss EAP Maven 存储库 下载 Undertow 核心源 JAR 文件,然后引用 /io/undertow/server/handlers/
目录中可用的处理程序。
您可以通过搜索 server.log
文件中在 JBoss EAP 服务器启动期间打印的 INFO
消息来验证 JBoss EAP 的当前安装中使用的 Undertow 核心版本,类似于以下示例中所示的信息:
INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0003: Undertow 1.4.18.Final-redhat-1 starting
AccessControlListHandler
类 Name: io.undertow.server.handlers.AccessControlListHandler
名称: access-control
可以根据远程对等点的属性来接受或拒绝请求的处理程序。
名称 | 描述 |
---|---|
acl | ACL 规则.这个参数是必需的。 |
attribute | 交换属性字符串.这个参数是必需的。 |
default-allow |
指定处理程序是否默认接受或拒绝请求的布尔值.默认值为 |
AccessLogHandler
类 Name: io.undertow.server.handlers.accesslog.AccessLogHandler
名称: access-log
访问日志处理程序.此处理程序根据提供的格式字符串生成访问日志消息,并将这些消息传递到提供的 AccessLogReceiver
中。
此处理程序可以记录通过 ExchangeAttribute
机制提供的任何属性。
此工厂为以下模式生成令牌处理程序:
pattern | 描述 |
---|---|
%a | 远程 IP 地址 |
%A | 本地 IP 地址 |
%b |
发送字节,除 HTTP 标头或 |
%B | 发送的字节数,HTTP 标头除外 |
%h | 远程主机名 |
%H | 请求协议 |
%l |
远程逻辑用户名 from |
%m | 请求方法 |
%p | 本地端口 |
%q |
查询字符串(除 |
%r | 请求的第一行 |
%s | 响应的 HTTP 状态代码 |
%t | 日期和时间,采用通用日志格式格式 |
%u | 经过身份验证的远程用户 |
%U | 请求的 URL 路径 |
%v | 本地服务器名称 |
%D | 处理请求所需的时间,以毫秒为单位 |
%T | 处理请求的时间(以秒为单位) |
%I | 当前 Request 线程名称(稍后与堆栈追踪进行比较) |
common |
|
combined |
|
也支持从 Cookie、传入标头或会话中写入信息。
它使用 Apache 语法建模:
-
用于传入标头的
%{I,xx}
-
用于传出响应标头的
%{O,xxx}
-
特定 Cookie
%{C,xxx}
-
%{R,xxx}
wherexxx
是ServletRequest
中的属性 -
%{s,xxx}
wherexxx
是HttpSession
中的属性
名称 | 描述 |
---|---|
格式 | 用于生成日志消息的格式。这是默认参数。 |
AllowedMethodsHandler
将某些 HTTP 方法列入白名单的处理程序。只有允许的方法集中具有方法的请求才可以继续。
类 Name: io.undertow.server.handlers.AllowedMethodsHandler
name: allowed-methods
名称 | 描述 |
---|---|
方法 |
允许的方法,如 |
BlockingHandler
启动阻止请求的 HttpHandler。如果线程当前在分配的 I/O 线程中运行。
类 Name: io.undertow.server.handlers.BlockingHandler
name:block ing
此处理程序没有参数。
ByteRangeHandler
范围请求的处理程序.这是一个通用处理程序,可以处理对固定内容长度的任何资源的范围请求,例如设置了 content-length
标头的任何资源。这不一定是处理范围请求的最有效方式,因为会生成完整的内容然后丢弃。目前,此处理程序只能处理简单、单一范围的请求。如果请求多个范围,则忽略 Range
标头。
类 Name: io.undertow.server.handlers.ByteRangeHandler
名称: 字节-range
名称 | 描述 |
---|---|
send-accept-ranges | 是否发送接受范围的布尔值.这是默认参数。 |
CanonicalPathHandler
此处理程序将相对路径转换为规范路径。
类名称: io.undertow.server.handlers.CanonicalPathHandler
名称: canonical-path
此处理程序没有参数。
DisableCacheHandler
通过浏览器和代理禁用响应缓存的处理程序。
类 Name: io.undertow.server.handlers.DisableCacheHandler
name: disable-cache
此处理程序没有参数。
DisallowedMethodsHandler
将某些 HTTP 方法列入黑名单的处理程序。
class Name: io.undertow.server.handlers.DisallowedMethodsHandler
name: disallowed-methods
名称 | 描述 |
---|---|
方法 |
禁止的方法,如 |
EncodingHandler
此处理程序作为内容编码实施的基础。编码处理程序作为委托添加到此处理程序,具有指定的服务器端优先级。
q
值将用于确定正确的处理程序。如果请求没有 q
值,服务器会选择优先级最高的处理程序作为要使用的编码。
如果没有处理程序匹配,则假设身份编码。如果因为 q
值为 0
而明确禁止身份编码,处理程序会设置响应代码 406(Not Acceptable)
并返回。
类 Name: io.undertow.server.handlers.encoding.EncodingHandler
名称: 压缩
此处理程序没有参数。
FileErrorPageHandler
从磁盘提供 文件的处理程序,以充当错误页面。默认情况下,此处理程序不提供任何响应代码,您必须配置它响应的代码。
类 Name: io.undertow.server.handlers.error.FileErrorPageHandler
name: error-file
名称 | 描述 |
---|---|
file | 文件的位置,以用作错误页面. |
response-codes | 导致重定向到定义错误页面文件的响应代码列表。 |
HttpTraceHandler
处理 HTTP 追踪请求的处理程序。
类 Name: io.undertow.server.handlers.HttpTraceHandler
name: trace
此处理程序没有参数。
IPAddressAccessControlHandler
可以根据远程对等点的 IP 地址接受或拒绝请求的处理程序。
类 Name: io.undertow.server.handlers.IPAddressAccessControlHandler
名称: ip-access-control
名称 | 描述 |
---|---|
acl | 代表访问控制列表的字符串。这是默认参数。 |
failure-status | 代表状态代码的整数,以便在被拒绝的请求时返回。 |
default-allow | 代表默认是否允许的布尔值. |
JDBCLogHandler
类 Name: io.undertow.server.handlers.JDBCLogHandler
名称: jdbc-access-log
名称 | 描述 |
---|---|
格式 |
指定 JDBC 日志模式。默认值为 |
datasource | 要日志的数据源的名称。此参数是必需的,它是默认参数。 |
tableName | 表名称. |
remoteHostField | 远程主机地址. |
userField | 用户名. |
timestampField | 时间戳. |
virtualHostField | VirtualHost. |
methodField | 方法. |
queryField | 查询. |
statusField | 状态. |
bytesField | 字节. |
refererField | 推荐者. |
userAgentField | 用户代理. |
LearningPushHandler
构建浏览器请求的资源缓存的处理程序,并使用服务器推送在受支持时推送它们。
类 Name: io.undertow.server.handlers.LearningPushHandler
名称: learning-push
名称 | 描述 |
---|---|
max-age | 代表缓存条目最长时间的整数。 |
max-entries | 代表最大缓存条目数的整数 |
LocalNameResolvingHandler
执行 DNS 查找以解析本地地址的处理程序。当前端服务器发送 X-forwarded-host
标头或使用 AJP 时,可以创建未解析的本地地址。
类 Name: io.undertow.server.handlers.LocalNameRe resolveHandler
Name: resolve-local-name
此处理程序没有参数。
PathSeparatorHandler
将 URL 中的非斜杠分隔符字符转换为斜杠的处理程序。通常,这将反斜杠转换为 Windows 系统上的斜杠。
类 Name: io.undertow.server.handlers.PathSeparatorHandler
名称: path-separator
此处理程序没有参数。
PeerNameResolvingHandler
执行反向 DNS 查找的处理程序,以解析对等地址。
类 Name: io.undertow.server.handlers.PeerNameRe resolveHandler
Name: resolve-peer-name
此处理程序没有参数。
ProxyPeerAddressHandler
将对等地址设置为 X-Forwarded-For
标头值的处理程序。这只在始终设置此标头的代理后面使用,否则攻击者便可以伪造其对等地址。
类 Name: io.undertow.server.handlers.ProxyPeerAddressHandler
name: proxy-peer-address
此处理程序没有参数。
RedirectHandler
通过 302
重定向重定向到指定位置的重定向处理程序。该位置指定为交换属性字符串。
类名称: io.undertow.server.handlers.RedirectHandler
name: redirect
名称 | 描述 |
---|---|
value | 重定向的目标.这是默认参数。 |
RequestBufferingHandler
缓冲所有请求数据的处理程序。
类 Name: io.undertow.server.handlers.RequestBufferingHandler
名称: buffer-request
名称 | 描述 |
---|---|
buffers | 定义最大缓冲区数的整数。这是默认参数。 |
RequestDumpingHandler
将交换转储到日志的处理程序。
类 Name: io.undertow.server.handlers.RequestDumpingHandler
名称: dump-request
此处理程序没有参数。
RequestLimitingHandler
限制并发请求的最大数量的处理程序。超出限制的请求将阻止,直到上一个请求完成为止。
类 Name: io.undertow.server.handlers.RequestLimitingHandler
名称: request-limit
名称 | 描述 |
---|---|
requests | 代表最大并发请求数的整数。这是默认参数,是必需的。 |
ResourceHandler
服务资源的处理程序。
类 Name: io.undertow.server.handlers.resource.ResourceHandler
name: resource
名称 | 描述 |
---|---|
位置 | 资源位置.这是默认参数,是必需的。 |
allow-listing | 布尔值,确定是否允许目录列表. |
ResponseRateLimitingHandler
将下载率限制为一定数量的字节/时间的处理程序.
类 Name: io.undertow.server.handlers.ResponseRateLimitingHandler
Name: response-rate-limit
名称 | 描述 |
---|---|
字节 | 限制下载率的字节数。这个参数是必需的。 |
time | 限制下载率的时间(以秒为单位)。这个参数是必需的。 |
SetHeaderHandler
设置固定响应标头的处理程序。
类 Name: io.undertow.server.handlers.SetHeaderHandler
name: header
名称 | 描述 |
---|---|
标头 | 标头属性的名称.这个参数是必需的。 |
value | 标头属性的值.这个参数是必需的。 |
SSLHeaderHandler
在连接上设置 SSL 信息的处理程序基于以下标头:
- SSL_CLIENT_CERT
- SSL_CIPHER
- SSL_SESSION_ID
如果此处理程序存在于链中,它将始终覆盖 SSL 会话信息,即使这些标头不存在。
此处理程序必须仅用于反向代理后面的服务器 ,其中反向代理已配置为始终为每个请求设置这些标头,如果没有 SSL 信息,则使用这些名称剥离现有的标头。否则,恶意客户端可能会欺骗 SSL 连接。
类 Name: io.undertow.server.handlers.SSLHeaderHandler
name: ssl-headers
此处理程序没有参数。
StuckThreadDetectionHandler
此处理程序检测到需要很长时间处理的请求,这可能表示处理线程卡时卡住。
类 Name: io.undertow.server.handlers.StuckThreadDetectionHandler
Name: stuck-thread-detector
名称 | 描述 |
---|---|
threshhold |
以秒为单位的整数值,用于确定请求处理所需的时间的阈值。默认值为 |
URLDecodingHandler
将 URL 和查询参数解码到指定的 charset 的处理程序。如果使用此处理程序,您必须将 UndertowOptions.DECODE_URL 参数设置为 false
。
这不如使用在 UTF-8 解码器中构建的解析器的效率。除非您需要解码 UTF-8 以外的内容,否则您应该改为依赖解析器解码。
类 Name: io.undertow.server.handlers.URLDecodingHandler
name: url-decoding
名称 | 描述 |
---|---|
charset | charset 可解码.这是默认的参数,是必需的。 |