目前系统由于前期设计的问题,会出现在URL地址中传输JSON数据的现象(正常应该是通过Post,Body 的形式传输),例如:http://xxxxService?json=[test:’123’] 这种格式,而Tomcat在版本升级过程中,已经禁用中括号([,]),大括号({,})等在URL地址中的传输,所以会导致一旦升级版本,整个业务系统都会报错,其他系统如果有类似的通过URL地址传输JSON的,也会出现同样的错误。可以看下面图:
修改源代码
不赘述,按照前面文档里来,有第二种方式,就不采用改源代码的方式了
修改配置解决(亲测有效)
修改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参数都是 [] {} | 所以以上两种修改应该能满足系统需要