我有以下的文件在我的項目:如何在Springfox Swagger提供的Swagger/v2/api-docs中啓用CORS頭文件?
@Configuration
@Order(Ordered.LOWEST_PRECEDENCE)
public class SwaggerConfig {
@Bean
public Docket apiSwagger2Documentation() { .... }
}
而在Application.java有:
@SpringBootApplication
@ComponentScan(basePackages = { ... })
@EnableSwagger2
public class Application {
...
}
招搖JSON是/v2/api-docs
下可用,工作正常。
我想要做的是啓用該端點的CORS頭。
對於我自己的控制器,我已經將@CrossOrigin
添加到控制器類,那些API然後具有CORS標題,可以正常工作。但對於Swagger JSON URL,我自己並沒有編寫控制器,所以我不能使用該註釋。
我已將以下方法添加到SwaggerConfig
,如CORS support in Spring Framework中的「Global 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頭文件?
你試圖包括代替簡單CORSFilter任何
@RequestHeader
在這裏描述https://stackoverflow.com/questions/32084925/simplecorsfilter-not-working? – Barathhttp://grokbase.com/t/gg/swagger-swaggersocket/1579hd7hzy/swagger-ui-from-multiple-microservices-springmvc/157e1j8xqn#157e1j8xqn – surya
@surya - 感謝您的鏈接,但我的問題是關於Swagger JSON文件位於/ v2/api-docs,而不是swagger-ui(我沒有使用swagger-ui)。 –