Swagger 无法访问解决方案

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版本的:

Swagger 无法访问解决方案_第1张图片

下面是3.0.0版本的:

Swagger 无法访问解决方案_第2张图片 

很明显可以发现二者的不同。

如果再不行可以检查项目中添加的过滤器和拦截器有没有给拦截掉。 

你可能感兴趣的:(1024程序员节)