15.10. 了解 请求转储 处理程序
RequestDumping 处理程序 io.undertow.server.handlers.RequestDumpingHandler 记录了请求的详细信息,以及 JBoss EAP 中 Undertow 处理的对应响应对象。
虽然此处理程序可用于调试,但它也可能记录敏感信息。在启用此处理程序时请注意这一点。
RequestDumping 处理程序取代了 JBoss EAP 6 中的 RequestDumperValve。
您可以在 JBoss EAP 或单个应用中的服务器级别上配置 RequestDumping 处理程序。
15.10.1. 在 服务器上配置请求转储 处理程序 复制链接链接已复制到粘贴板!
此流程解释了如何使用表达式过滤器在服务器级别配置 RequestDumping 处理程序。
先决条件
- 您可以访问管理 CLI。
- 有修改服务器配置的权限。
流程
使用
RequestDumping处理程序创建一个新表达式过滤器:---- /subsystem=undertow/configuration=filter/expression-filter=requestDumperExpression:add(expression="dump-request") ----
---- /subsystem=undertow/configuration=filter/expression-filter=requestDumperExpression:add(expression="dump-request") ----Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Undertow Web 服务器中启用表达式过滤器:
---- /subsystem=undertow/server=default-server/host=default-host/filter-ref=requestDumperExpression:add ----
---- /subsystem=undertow/server=default-server/host=default-host/filter-ref=requestDumperExpression:add ----Copy to Clipboard Copied! Toggle word wrap Toggle overflow
当以这种方式将启用 RequestDumping 处理程序作为表达式过滤器时,会记录 Undertow Web 服务器处理的所有请求和相应的响应。
15.10.1.1. 为特定 URL 配置处理程序 复制链接链接已复制到粘贴板!
除了记录所有请求外,您还可以使用 expression 过滤器来仅记录特定 URL 的请求和对应的响应。这可以通过表达式中的 predicate 来完成,如路径、 或 path -prefixpath-suffix。例如,如果要将所有请求和对应的响应记录到 /myApplication/test,您可以在创建表达式过滤器时使用表达式 "path (/myApplication/test)-> dump-request"。这只会将一个路径完全匹配的 dump-request" 而不是表达式 "/myApplication/test 定向到 RequestDumping 处理程序。
15.10.1.2. 在应用程序中配置请求转储处理程序 复制链接链接已复制到粘贴板!
此流程解释了如何在单个应用程序中配置 RequestDumping 处理程序。这会将处理程序的范围限制为该特定应用。
流程
-
创建或编辑应用中的
WEB-INF/undertow-handlers.conf文件。 要记录此应用的所有请求和对应的响应,请将以下行添加到
undertow-handlers.conf中:---- dump-request ----
---- dump-request ----Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,要记录应用中特定 URL 的请求和响应,请在表达式中使用 predicate。
Replace `/test` with the desired path relative to the application's context root.
Replace `/test` with the desired path relative to the application's context root.Copy to Clipboard Copied! Toggle word wrap Toggle overflow [source] ---- path(/test) -> dump-request ----
[source] ---- path(/test) -> dump-request ----Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在应用的
WEB-INF/undertow-handlers.conf中定义的表达式中使用 predicates,如path、path-prefix或path-suffix。例如,如果应用程序的上下文 root 是
/myApplication,并且您使用表达式路径(/test)→ dump-request,它会将请求记录到/myApplication/test。- 如果需要,请重新部署应用,以应用更改。