J'ai le fichier suivant dans mon projet:Comment activer les en-têtes CORS dans les fichiers Swagger/v2/api-doc proposés par Springfox Swagger?
@Configuration
@Order(Ordered.LOWEST_PRECEDENCE)
public class SwaggerConfig {
@Bean
public Docket apiSwagger2Documentation() { .... }
}
Et dans le Application.java il y a:
@SpringBootApplication
@ComponentScan(basePackages = { ... })
@EnableSwagger2
public class Application {
...
}
Le Swagger JSON est disponible sous /v2/api-docs
, qui fonctionne très bien.
Ce que je voudrais faire est d'activer les en-têtes CORS pour ce point de terminaison.
Pour mes propres contrôleurs, j'ai ajouté @CrossOrigin
aux classes de contrôleur, ces API ont alors des en-têtes CORS, cela fonctionne très bien. Mais pour l'URL Swagger JSON, je n'ai pas écrit de contrôleur moi-même, donc je ne peux pas utiliser cette annotation.
J'ai ajouté la méthode suivante au SwaggerConfig
, comme décrit dans "Configuration globale CORS" dans CORS support in Spring Framework.
@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");
}
};
}
Les deux instructions d'impression sont imprimées et la méthode est appelée. Mais quand je l'appelle l'URL avec boucle:
curl -H "Origin: foo.com" \
-H "Access-Control-Request-Method: GET" \
-X OPTIONS \
--verbose \
http://localhost:9274/v2/api-docs
Les en-têtes CORS ne sont pas dans la réponse. (Contrairement à mes propres méthodes de contrôleur, annotées avec @CrossOrigin
, où la réponse a les en-têtes CORS.)
J'utilise springfox-swagger2 version 2.7.0 et spring-boot-starter-web 1.5.2.
Que puis-je faire pour activer les en-têtes CORS sur le point de terminaison Swagger JSON API?
Avez-vous essayé d'inclure CORSFilter simples en place décrit ici https://stackoverflow.com/questions/32084925/simplecorsfilter-not-working? – Barath
http://grokbase.com/t/gg/swagger-swaggersocket/1579hd7hzy/swagger-ui-from-multiple-microservices-springmvc/157e1j8xqn#157e1j8xqn – surya
@surya - Merci pour le lien, mais ma question concerne le Swagger Fichier JSON à/v2/api-docs, par opposition à la swagger-ui (je n'utilise pas swagger-ui). –