Tomcat8升級后URL中特殊字符報錯出現原因


請求帶上花括號等字符,請求無法送達服務端,報錯:

Failed to load resource: the server responded with a status of 400 ()

https://blog.csdn.net/Carino_U/article/details/78973120

用springboot開發接口時,SpringBoot URL帶有特殊字符([]/{}等),報400錯誤

這個問題是由於Tomcat的新版本中增加了一個新特性,就是嚴格按照 RFC 3986規范進行訪問解析,而 RFC 3986規范定義了Url中只允許包含英文字母(a-zA-Z)、數字(0-9)、-_.~4個特殊字符以及所有保留字符(RFC3986中指定了以下字符為保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。

解決方案: 

  ① 可以客戶端請求時URL encode處理特殊字段

  ② 改用 post 請求 『由於我這是一個新服務在開發中,所以選用了這種方案』

  ③ 改 Tomcat 配置文件

    http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Other

    官方描述如下

springboot添加如下:

@Configuration
public class PathConfig {

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

即可支持花括號請求。。


免責聲明!

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



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