tomcat请求报错Invalid character found in the request target解决

tomcat启动项目后,进入某页面时报错Invalid character found in the request target…The valid characters are defined in RFC 3986

原因:
页面地址url中包含特殊字符,我是需要用 | 分割参数

解决:
网上说降低tomcat版本可以解决,但显然这种方法并不实用,一般项目的tomcat版本不可能随意变动的。
但问题还是在于tomcat,他认为 | 是违规的特殊字符,
所有需要配置,
在项目所使用的tomcat安装目录下,找到conf/catalina.properties文件,在最后添加两行:
tomcat.util.http.parser.HttpParser.requestTargetAllow=|
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
但注意!!
requestTargetAllow 只能配置|、{、} 这三个字符,其他的特殊字符(例如" < > [ \ ] ^ ` { | } .),依旧报错,如果使用了|{}之外的其他字符,那就还需要另外配置:
找到
conf/server.xml中的节点中,添加2个属性(可以接收任意特殊字符的组合,自行配置):

relaxedPathChars="|{}[],"
relaxedQueryChars="|{}[],"

刷新项目,重新启动,可以正常访问!


版权声明:本文为qq_39609264原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。