SpringBoot專案請求路徑中有正反斜槓的處理辦法
在Application中新增靜態程式碼塊:
//預設情況下Tomcat等伺服器是拒絕url中帶%2F或者%5C的URL,因為它們經瀏覽器解析之後就變成了/和\,
// 伺服器預設是拒絕訪問的,所以需要通過服務的配置來解決這個問題。
static {
//解決URL中包含%2F的問題
System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");
//解決URL中包含%5C的問題
System.setProperty("org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH", "true");
}
增加一個配置類:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.util.UrlPathHelper;
@Configuration
@EnableWebMvc
public class WebConfiguration implements WebMvcConfigurer {
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
UrlPathHelper urlPathHelper = new UrlPathHelper();
urlPathHelper.setUrlDecode(false);
urlPathHelper.setAlwaysUseFullPath(true);//設定總使用完整路徑
configurer.setUseSuffixPatternMatch(false);
configurer.setUseRegisteredSuffixPatternMatch(true);
configurer.setUrlPathHelper(urlPathHelper);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*");
}
}