在请求目标中发现无效字符 Tomcat 9

Invalid character found in the request target Tomcat 9

在将在 Tomcat 7 下正常工作的项目迁移到 Tomcat 9 时,在请求中传递带有重音符号的单词时,我收到错误 Invalid character found in the request target。

修改了server.xml文件,在连接器中引入URIEncoding="UTF-8”,也引入了子句relaxedQueryChars= áÁéÉíÍóÓúÚ,但还是报同样的错误,摸不到项目的实际代码。

日志跟踪显示:java.lang.IllegalArgumentException: Invalid character found in the request target [/sahab/lupaDem.do?filtro=LupaDem&param1=1&param2=29527&param3=OBSERVACI0xd3N%20ANTIRR0xc1BICA

HTTP 不允许为请求的路径指定编码。因此,过去服务器使用 OS 设置,这实际上令人困惑,尤其是对于使用 world-wide.

的应用程序

因此建立了始终将请求编码为 UTF-8 的标准,即便如此,也有 URLEncoding 可以通过 %-转义任何特殊字符来防止 UTF-8 问题。

简而言之,确保您的请求已正确编码。 Tomcat 的早期版本可能没有这方面的错误。请求来自客户端,而不是服务器本身。