tomcat 解决 java.lang.IllegalArgumentException: Invalid character 异常
tomcat 新版添加了对于 http 头的验证。出现 java.lang.IllegalArgumentException: Invalid character found in the request target. The valid char… 异常
网上查找了几种方法归类
1. 更换 tomcat 版本,但是 7,8,9 的版本都更换过,问题依然。但是有网友确实可以解决,但是更换到具体什么版本未知.
2. 前端 http 请求的时候对参数进行 URL 编码处理,理论上是绝对可行的,但是已有的 http 请求数很多,一个一个修改工作量大。未试
3. 配置 tomcat 的 catalina.properties 添加或者修改: tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
4. 使用 Connector 中 relaxedPathChars 和 relaxedQueryChars 属性可以解决问题。找到 tomcat/conf/server.xml, 在 Connector 中增加这两个配置.<Connector port="8080" protocol="HTTP/1.1" relaxedPathChars="[]{}|\^" relaxedQueryChars="[]{}|\^" />