1.springboot 1.3.5升級1.5.9后 默認使用tomcat 8.5版本而之前用的是tomcat7 get請求報400 異常信息為 The valid characters are defined in RFC 7230 and RFC 3986
2.注意這里說明了,只是get請求。post的請求沒問題
-------解決辦法
將get請求的參數urlencode一下
param = encodeURIComponent(param);
PS:
1.RFC3986文檔規定,Url中只允許包含英文字母(a-zA-Z)、數字(0-9)、-_.~4個特殊字符以及所有保留字符。
2.tomcat 8.0對URL做出了一些更嚴格的限制
所以,很多get請求包含了特殊字符(請求數據格式定義的是json的(contentype/json)) 在低版本的容器是可以的且后台能夠自動識別解析url的json格式數據,
但是到了8.0及以上版本的tomcat容器后就不行了。
-----很多人嘗試給tomcat降級,因為很多從jdk7升到jdk8的朋友,會為了容器校驗嚴格的這個問題考慮使用低版本不報錯的容器(8.0.2-8.0.3好像是可以)。
但這個我認為也不是最終解決辦法,兩個原因:1.服務容器很難避免為了適應快速的技術發展而進行升級,只是時間問題 且進行轉碼也對明文信息起到了保護作用。
2.現在容器的api和spring的api都是自動對url進行decode,所以不用擔心還要向以前一樣修改后台代碼.z這一點很贊。
------我也參考了如下朋友的帖子
http://blog.csdn.net/vickyway/article/details/46375971
