Tomcat 服务器正在响应此 URL 的 400 个错误请求

Tomcat server is responding with 400 bad request for this URL

我已经使用 Apache Tomcat 8.5.8

部署了一个静态 Web 应用程序

当我调用正常 URL 时,它工作正常。 http://localhost/example/index.html

但是当我调用以下 URL 时,它给了我 400 bad request 错误。 http://localhost/example/index.html?host_info=Outlook|Web

我知道这是因为 URL 有特殊字符 (|)。 但是我无法配置 Tomcat,因为我对 Tomcat 配置还很陌生。

而且我无法更改 URL,因为它不是我生成的。它来自其他组件。

所以我真的需要配置 Tomcat 服务器,以便它可以接受 url。

谁能帮我解决这个问题?

尝试使用 tomcat 8.0.* 而不是 8.5 我之前也遇到过同样的问题,我不得不将 tomcat 降级到 8.0.28

此行为是在 Tomcat 7.0.76、8.0.42 和 8.5.12 中引入的,以符合 RFC 7231.

可以使用 catalina.properties 中的 属性 requestTargetAllow 恢复此强制检查以允许使用禁止字符:

tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}