springboot项目集成swagger的过程中经常出现swagger无法访问的问题。看了网上很多教程可以在项目中添加如下配置类解决:
@Configuration
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/");
}
}
如果还是不能解决问题,可以在本地maven仓库中查看swagger-ui的jar包中的资源文件的目录结构:
如下是2.7.0版本的:
下面是3.0.0版本的:
很明显可以发现二者的不同。
如果再不行可以检查项目中添加的过滤器和拦截器有没有给拦截掉。