gpt4 book ai didi

spring - 如何在 Springfox Swagger 提供的 Swagger/v2/api-docs 中启用 CORS header ?

转载 作者:行者123 更新时间:2023-12-04 11:10:09 25 4
gpt4 key购买 nike

我的项目中有以下文件:

@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 header 。

对于我自己的 Controller ,我添加了 @CrossOrigin对于 Controller 类,这些 API 具有 CORS header ,可以正常工作。但是对于 Swagger JSON URL,我自己没有编写 Controller ,因此我无法使用该注释。

我已将以下方法添加到 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 header 不在响应中。 (与我自己的 Controller 方法相反,用 @CrossOrigin 注释,其中响应确实具有 CORS header 。)

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

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

最佳答案

我认为您需要一个通用的 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);
}

关于spring - 如何在 Springfox Swagger 提供的 Swagger/v2/api-docs 中启用 CORS header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com