15.14. 配置请求转储处理程序
RequestDumping
处理程序 io.undertow.server.handlers.RequestDumpingHandler
记录了请求的详细信息,以及由 JBoss EAP 中 Undertow 处理的对应响应对象。
虽然此处理程序可用于调试,但它也可能记录敏感信息。在启用此处理程序时请注意这一点。
RequestDumping
处理程序取代了 JBoss EAP 6 中的 RequestDumperValve
。
您可以在 JBoss EAP 或单个应用中的服务器级别上直接在服务器级别上配置 RequestDumping
处理程序。
15.14.1. 在服务器上配置请求转储处理程序
RequestDumping
处理程序应配置为表达式过滤器。要将 RequestDumping
处理程序配置为表达式过滤器,您需要执行以下操作:
使用 RequestDumping
Handler 创建新的 Expression Filter
/subsystem=undertow/configuration=filter/expression-filter=requestDumperExpression:add(expression="dump-request")
在 Undertow Web 服务器中启用表达式过滤器
/subsystem=undertow/server=default-server/host=default-host/filter-ref=requestDumperExpression:add
当以这种方式将启用 RequestDumping
处理程序作为表达式过滤器时,会记录 Undertow Web 服务器处理的所有请求和相应的响应。
为特定 URL 配置请求转储处理程序
除了记录所有请求外,您还可以使用 expression 过滤器来仅记录特定 URL 的请求和对应的响应。这可以通过表达式中的 predicate 来完成,如路径、
或 path
-prefixpath-suffix
。例如,如果要将所有请求和对应的响应记录到 /myApplication/test
,您可以在创建表达式过滤器时使用表达式 "path (/myApplication/test)->
dump-request"。这只会将一个路径完全匹配的 dump-request"
而不是表达式 "/myApplication/test
定向到 RequestDumping
处理程序。
15.14.2. 在应用程序中配置请求转储处理程序
除了在服务器上配置 RequestDumping
处理程序外,您还可以在单个应用程序中配置它。这会将处理程序的范围限制为仅该特定应用。RequestDumping
处理程序应在 WEB-INF/undertow-handlers.conf
中配置。
要在 WEB-INF/undertow-handlers.conf
中配置 RequestDumping
处理程序,以记录此应用程序的所有请求和对应的响应,请将以下表达式添加到 WEB-INF/undertow-handlers.conf
:
示例: WEB-INF/undertow-handlers.conf
dump-request
要在 WEB-INF/undertow-handlers.conf
中配置 RequestDumping
处理程序,以仅记录对此应用中特定 URL 的请求和对应的响应,您可以在表达式中使用 predicate,如 路径
、path-prefix
或 path-suffix
。例如,要记录应用程序中 要测试的
所有请求和对应的响应,可以使用带有 path
predicate 的以下表达式:
示例: WEB-INF/undertow-handlers.conf
path(/test) -> dump-request
在应用的 WEB-INF/undertow-handlers.conf
中定义的表达式中使用 path
、path-prefix
或 path-suffix
等 predicates 时,使用的值将相对于应用的上下文根目录。例如,如果应用程序的上下文 root 是 myApplication
,其表达式 路径(/test)-> dump-request
在 WEB-INF/undertow-handlers.conf
中配置,它将只记录对 /myApplication/test
的请求和相应的响应。