終極解決方案:(導出可能出現)
我的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="|{}[],\"