問題描述:
啟動Tomcat工程報錯:在請求目標中找到無效字元。有效字元在RFC 7230和RFC 3986中定義。
原因分析:
有些地址被Tomcat收信確認存在不合法字元
7.0.76及之後版本Tomcat中的新特性,嚴格按照 RFC 3986 規範進行存取解析
RFC 3986規範定義了URL中只允許包含英文字母(a-zA-Z)、數字(0-9)、-_.~4個特殊字元以及所有保留字元(RFC3986中指定了以下字元為保留字元:! * ’ ( ) ; : @ & = + $ , / ? # [ ])
解決方案:
1)檢查不合法字元
檢查系統地址和地址傳參中,是否存在不合法字元。
例如在URL中傳入了一段json,傳入的參數中有"{"字元,不在RFC3986中的保留欄位中
2)放行不合法字元
在/conf/catalina.properties檔案中,找到最後註釋掉的一行
#tomcat.util.http.parser.HttpParser.requestTargetAllow=|
改成
tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
表示把{}放行