加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Springfox Swagger提供的Swagger / v2 / api-docs中启用CO

发布时间:2020-12-15 01:41:11 所属栏目:大数据 来源:网络整理
导读:我的项目中有以下文件: @Configuration@Order(Ordered.LOWEST_PRECEDENCE)public class SwaggerConfig { @Bean public Docket apiSwagger2Documentation() { .... }} 在Application.java中有: @SpringBootApplication@ComponentScan(basePackages = { ...

我的项目中有以下文件:

@Configuration
@Order(Ordered.LOWEST_PRECEDENCE)
public class SwaggerConfig {

    @Bean
    public Docket apiSwagger2Documentation() { .... }
}

在Application.java中有:

@SpringBootApplication
@ComponentScan(basePackages = { ... })
@EnableSwagger2
public class Application {
    ...
}

Swagger JSON在/ v2 / api-docs下可用,工作正常.

我想做的是为该端点启用CORS头.

对于我自己的控制器,我已经将@CrossOrigin添加到控制器类中,那些API然后具有CORS头,这可以正常工作.但是对于Swagger JSON URL我自己没有编写控制器,所以我不能使用那个注释.

我已将以下方法添加到SwaggerConfig中,如CORS support in Spring Framework中的“全局CORS配置”中所述.

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        System.out.println("*** corsConfigurer called");
        return new WebMvcConfigurerAdapter() {
            @Override public void addCorsMappings(CorsRegistry registry) {
                System.out.println("*** addCorsMappings called");
                registry.addMapping("/v2/api-docs");
            }
        };
    }

打印两个打印语句,因此调用该方法.但是当我用curl调用URL时:

curl -H "Origin: foo.com"  
   -H "Access-Control-Request-Method: GET"   
   -X OPTIONS  
   --verbose  
   http://localhost:9274/v2/api-docs

CORS标头不在响应中. (与我自己的控制器方法相反,用@CrossOrigin注释,响应确实有CORS头.)

我使用的是springfox-swagger2版本2.7.0和spring-boot-starter-web 1.5.2.

如何在Swagger JSON API端点上启用CORS头?

最佳答案
我认为你需要一个通用的Web过滤器而不是Web Mvc配置.

@Bean
public CorsFilter corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

    // Allow anyone and anything access. Probably ok for Swagger spec
    CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true);
    config.addAllowedOrigin("*");
    config.addAllowedHeader("*");
    config.addAllowedMethod("*");

    source.registerCorsConfiguration("/v2/api-docs",config);
    return new CorsFilter(source);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读