一、因公司項目版本使用JDK及tomcat老舊,形成沒法使用不少新引用中間件,因此提出升級JDk,以及tomcatnode
升級以後訪問某些頁面時出現一下報錯:web
問題緣由定位到 tomcat7及以上版本會出現:URL中包含了非法字符 後端
二、解決方式:tomcat
(1)url攔截量少的狀況下,能夠經過修改請求URL編碼轉化特殊字符,達到不被tomcat攔截效果編碼
這裏須要注意的一點,對於get請求的中文亂碼問題,若是你沒有在tomcat配置文件中設置編碼格式,天真的url
想用request.setCharacterEncoding(「UTF-8」)來在後端設置後端的解碼格式,這種方式對於get請求是無效的。spa
同時有的小夥伴可能會想咱們能夠在項目的web.xml中設置編碼過濾器。抱歉這種方式對於get請求也是無效的。
(2)若是攔截狀況多則修改tomcat配置文件service.xml以下:code
relaxedQueryChars="[^]" xml
這個配置,"[^]"表示請求url中 ^字符不被攔截,若是還有別的符號須要過濾,逗號隔開便可中間件
三、另附RFC 3986 文檔規定,Url中只容許出現的字符
英文字母(a-z,A-Z)、
數字(0-9)、
- _ . ~ 4個特殊字符
保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ]