終極解決方案: Invalid character found in the request target.


終極解決方案:(導出可能出現)

我的tomcat版本是8.5.32,導出時遇到以下報錯。

報錯日志

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

從錯誤日志中看到對請求URL中對字符做了限制。

解決方法

1.在tomcat安裝路徑中conf/catalina.properties中最后添加2行:

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

網上還有一些掩耳盜鈴的做法,就是降低tomcat的版本。Tomcat在 8.5版本后,在http解析時做了嚴格限制。

requestTargetAllow 只能配置|、{、} 這三個字符,對於其他的(例如" < > [ \ ] ^ ` { | } .),依舊報錯,如果使用了|{}之外的其他字符,那就還需要如下配置。

2.在conf/server.xml中的<Connector>節點中,添加2個屬性(可以接收任意特殊字符的組合,自行配置):

relaxedPathChars="|{}[],\"
relaxedQueryChars="|{}[],\"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM