原因分析:可能是swagger2的內置接口和靜態資源攔截了
原springboot的全局跨域配置如下
/**
* 解決跨域問題
*/
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
//設置允許跨域的路勁
registry.addMapping("/**")
//設置允許跨域請求的域名
// .allowedOrigins("*")
.allowedOriginPatterns("*")
//設置允許的方法
.allowedMethods("*")
//允許的請求頭
.allowedHeaders("*")
//跨域允許時間
.maxAge(3600)
//是否允許證書 不在默認開啟
.allowCredentials(true);
}
}
配置跨域后發現swagger2不能繼續訪問,需要在上面的類中添加如下代碼:
/**
* 跨域配置后swagger2可能不能訪問,需要增加如下配置
* @param registry
* 對靜態資源的配置
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
總配置類代碼如下:
/**
* 解決跨域問題
*/
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
//設置允許跨域的路勁
registry.addMapping("/**")
//設置允許跨域請求的域名
// .allowedOrigins("*")
.allowedOriginPatterns("*")
//設置允許的方法
.allowedMethods("*")
//允許的請求頭
.allowedHeaders("*")
//跨域允許時間
.maxAge(3600)
//是否允許證書 不在默認開啟
.allowCredentials(true);
}
/**
* 跨域配置后swagger2可能不能訪問,需要增加如下配置
* @param registry
* 對靜態資源的配置
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}