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


報錯如下:

 

 

 在請求目標中發現無效字符。有效字符在RFC 7230和RFC 3986中定義。

原因是Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了對於http頭的驗證。

就是添加了些規則去限制HTTP頭的規范性

解決方法如下:

@Bean
public ConfigurableServletWebServerFactory webServerFactory() {
   TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
   factory.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> connector.setProperty("relaxedQueryChars", "|{}[]\\"));
   return factory;
}

還可以修改tomcat配置文件

在Tomcat的安裝目錄中,打開conf/server.xml文件,找到<Connector>節點

只需在剛剛的<Connector>標簽中,加入relaxedPathChars="|{}[],%" 和 relaxedQueryChars="|{}[],%"即可,其中|后面的字符可以自己隨意增減。


免責聲明!

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



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