在保证传参正确,端口号正确的情况下,查看是否两个环境tomcat版本不一样,所调地址是否含有特殊的符号,比如:[]
从 7.0.88 开始,Tomcat为了安全考虑,不在支持[,]这种参数传递方式了。解决办法如下,修改 $TOMCAT_HOME/conf/server.xml,新增 relaxedQueryChars="[,]"选项。
网上有很多类似的解决办法,我只记录简单粗暴的解决:
第一步:
查找到不同环境对应的tomcat的server.xml,在 <Connector port="8085" protocol="HTTP/1.1" minSpareThreads="100" maxSpareThreads="500" maxThreads="8000" acceptCount="500"
connectionTimeout="20000"
redirectPort="8115" relaxedQueryChars="[,]"
maxPostSize="-1" maxHttpHeaderSize ="102400"/>中的relaxedQueryChars="[,]"该参数中配上出错的特殊符号 ,port="8085"该端口号根据实际调用情况进行填写
第二步:在catalina.properties配置文件的末尾加上:
tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
重启项目,基本上就可以了。