1. 程式人生 > >Tomcat8 -Invalid character found in the request target.

Tomcat8 -Invalid character found in the request target.

Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC

Linux部署專案(本地執行良好,Tomcat版本7)後出現標題所示錯誤,查詢資料得知,tomcat8版本增加了對請求的校驗。

RFC3986文件規定,Url中只允許包含英文字母(a-zA-Z)、數字(0-9)、-_.~4個特殊字元以及所有保留字元。

RFC3986中指定了以下字元為保留字元:

!*'();:@&=+$,/?#[]

還有一些字元,當他們直接放在Url中的時候,可能會引起解析程式的歧義。這些字元被視為不安全字元,原因有很多。

->空格Url在傳輸的過程,或者使用者在排版的過程,或者文字處理程式在處理Url的過程,都有可能引入無關緊要的空格,或者將那些有意義的空格給去掉

->引號以及<>引號和尖括號通常用於在普通文字中起到分隔Url的作用

->#通常用於表示書籤或者錨點

->%百分號本身用作對不安全字元進行編碼時使用的特殊字元,因此本身需要編碼

->{}|\^[]`~某一些閘道器或者傳輸代理會篡改這些字元

故,該錯誤是由於請求中url引數“違法”造成的。

解決辦法:

① 降低tomcat版本;

② 對url中引數進行URL編碼;

博文采用第二種方法,如下圖所示:

這裡寫圖片描述