最近遇见一个问题:后台接收一个json字符串:param=
{"coords":[{"x":116.46787,
"y":39.91491},{"x":116.46787,"y":39.91491}],"from":"GPS","to": "SMM"}
返回400错误。
原因:tomcat 7.0以上版本为了安全,会对一些特殊字符进行了编码,导致400错误
解决:1.找到config/catalina.properties 最后一行,去掉注释#
在最后加一个{}
#tomcat.util.http.parser.HttpParser.requestTargetAllow=| 改成
tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
2.如果json字符串中还存在 [],则还需要在config/server.xml中
的Connector中添加这个:relaxedQueryChars="[,]"
<Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
relaxedQueryChars="[,]" />
如果还有其他特殊的字符串,可以直接添加到这个属性里。完美解决,在网上找了很多,有些不全,在这里整合了几位大佬解决的方案。感谢每位大佬提供的方案。