配置跨域後發現swagger2不能訪問問題
阿新 • • 發佈:2022-01-14
配置跨域後發現swagger2不能訪問問題
原因分析:可能是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/"); } }