決方案: Invalid character found in the request target. The valid characters are defined in RFC 3986

get請求連接裏有特殊字符 轉換過來就是以下字符(對應10進制ASCII),也就是URL中不能包含的特殊字符:

鍵盤上那些控制鍵:(<32或者=127)
非英文字符(>127)
空格(32)
雙引號(34)
#(35)
<(60)
>(62)
反斜槓(92)
^(94)
TAB上面那個鍵,~(96)
{(123)
}(124)
|(125)

我碰到這個問題也搗弄了半天,參照其他的各種解決方案都不行。並且我是使用了多種特殊字符,運用單一某種方案還不能完全奏效。下面是經過實踐的解決方案,請按順序讀完。
解決辦法(親測)

在conf/catalina.properties中最後添加2行:

tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

在所有Tomcat版本均適用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章