1.部署異常如下: 2.出現原因 這個問題的原因是高版本的tomcat中的新特性:就是嚴格按照 RFC 3986規範進行訪問解析,而 RFC 3986規範定義了Url中只允許包含英文字母(a-zA-Z)、數字(0-9)、-_.~4個特殊字元以及所有保留字元(RFC3986中指定了以下字元為保留字元: ...
1.部署異常如下:
2.出現原因
這個問題的原因是高版本的tomcat中的新特性:就是嚴格按照 RFC 3986規範進行訪問解析,而 RFC 3986規範定義了Url中只允許包含英文字母(a-zA-Z)、數字(0-9)、-_.~4個特殊字元以及所有保留字元(RFC3986中指定了以下字元為保留字元:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。而我們的系統在通過地址傳參時,在url中傳了一段json,傳入的參數中有"{"不在RFC3986中的保留欄位中,所以會報這個錯。
簡而言之就是說,高版本的tomcat更加規範,才會出現這種報錯
3.解決辦法
3.1降低Tomcat的版本(太麻煩,可能你也沒有許可權做這件事)
3.2 在springboot中添加配置
3.2.1 http請求配置處理
@SpringBootApplication
public class IntelligentBackApplication{
public static void main(String[] args) {
System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");
SpringApplication.run(IntelligentBackApplication.class, args);
} }
3.2.2 webmvc配置路徑處理
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
UrlPathHelper urlPathHelper = new UrlPathHelper();
urlPathHelper.setUrlDecode(false);
configurer.setUrlPathHelper(urlPathHelper);
}
}
原文鏈接:https://blog.csdn.net/a754782427/article/details/126409965