以前項目一直使用tomcat6 可是由於某個緣由更換了tomcat 7 發現傳遞json參數時會出現html
Using the protocol="HTTP/1.1" connector (Coyote) After upgrading a site to Tomcat 7.0.73 from 7.0.72 or from anything earlier, a url with an unencoded { or } (ie. http://my.com?filter={"search":"isvalid"} ), now returns a 400 error code and logs the following error message: "INFO: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986"
百度後,嘗試了各類辦法 ,都沒有效果。好比 java
Tomcat7以上版本不兼容 url中傳json字符串,可更換低版本Tomcat(不建議)apache
可經過JS方法【encodeURIComponent(param)】對參數進行url轉碼解決,以下:json
後來看到一篇博客,建議你們參考 原文:https://blog.csdn.net/aerchi/article/details/77963622tomcat
根據rfc規範,url中不容許有 |,{,}等特殊字符,但在實際生產中仍是有些url有可能攜帶有這些字符,特別是|仍是較爲常見的。在tomcat升級到7之後,對url字符的檢查都變嚴格了,若是出現這類字符,tomcat將直接返回400狀態碼。url
後來有人對此提出了異義,見: https://bz.apache.org/bugzilla/show_bug.cgi?id=60594.net
通過一番討價還價,tomcat的開發人員增長一項設置,容許配置在url能夠出現的特殊字符,但也僅限於|,{,}三種,見:http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Othercode
該項設置在如下版本的tomcat中有效:htm
- 8.5.x for 8.5.12 onwardsblog
- 8.0.x for 8.0.42 onwards
- 7.0.x for 7.0.76 onwards
解決方法:
找到config/catalina.properties 最後一行,去掉註釋#
在最後加一個{}
#tomcat.util.http.parser.HttpParser.requestTargetAllow=| 改成: tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}