Tomcat支持url地址特殊字符(配置篇)

822 阅读1分钟

    目前系统由于前期设计的问题,会出现在URL地址中传输JSON数据的现象(正常应该是通过Post,Body 的形式传输),例如:http://xxxxService?json=[test:’123’] 这种格式,而Tomcat在版本升级过程中,已经禁用中括号([,]),大括号({,})等在URL地址中的传输,所以会导致一旦升级版本,整个业务系统都会报错,其他系统如果有类似的通过URL地址传输JSON的,也会出现同样的错误。可以看下面图:

修改源代码

不赘述,按照前面文档里来,有第二种方式,就不采用改源代码的方式了

Tomcat支持url地址中的特殊字符(源代码篇)

修改配置解决(亲测有效)

修改catalina.properties

路径:tomcat/conf/catalina.properties

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

这个修改完以后,浏览器URL地址支持 | {} 这些

修改Server.xml

路径: tomcat/conf/server.xml

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" relaxedQueryChars="[,]" />

主要是 relaxedQueryChars ,可以支持多种特殊字符,一般URL中json参数都是 [] {} | 所以以上两种修改应该能满足系统需要

最终效果