Tomcat IllegalArgumentException(Invalid character found in the request target) 问题解决
-09-06
线上环境中部署的 Tomcat 项目,出现部分页面无法打开的情况,但本地环境是好的。经过排查发现,本地 Tomcat版本为 7.0.77,而线上版本为 7.0.88。报错的具体描述为java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
。
描述
Tomcat 的日志如下:
INFO: Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
具体原因是,从 7.0.88 开始,Tomcat为了安全考虑,不在支持[,]
这种参数传递方式了。解决办法如下,修改 $TOMCAT_HOME/conf/server.xml,新增relaxedQueryChars="[,]"
选项。
参考
1、/bohnman/squiggly-java/issues/42#issuecomment-414673274
2、/questions/46251131/invalid-character-found-in-the-request-target-in-spring-boot
3、/a/1190000009817997
4、/p/e7fbfa418744
说明:本站著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处,来自
我最后的解决方式:encodeURIComponent 进行处理