Sto provando a configurare CORS globalmente tramite WebMvcConfigurerAdapter
mostrato di seguito. Per testare sto colpendo il mio endpoint API tramite un'app di piccolo nodo che ho creato per emulare un servizio esterno. Quando provo questo approccio la risposta non contiene le intestazioni corrette e non riesce conSpring Global CORS configuration non funziona ma Controller config level
XMLHttpRequest cannot load http://localhost:8080/api/query/1121. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:333' is therefore not allowed access.
globale Config
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/query/**")
.allowedOrigins("*")
.allowedHeaders("*")
.allowCredentials(true);
}
}
Tuttavia quando utilizzare il @CrossOrigin
annotazione in questo modo funziona bene rispondendo con le intestazioni appropriate .
@CrossOrigin(origins = "*", allowCredentials = "true", allowedHeaders = "*")
@RestController
@RequestMapping(value = "/api/query", produces = MediaType.APPLICATION_JSON_VALUE)
public class QueryController {
......
}
Produce
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://localhost:333
Che cosa mi manca per far funzionare la configurazione globale (istruzioni seguite qui https://spring.io/blog/2015/06/08/cors-support-in-spring-framework). Mi sento come se mi mancasse qualcosa di semplice da quando l'annotazione del controller funziona bene.
Forse '.allowedOrigins (" * ").allowedHeaders ("*") 'sono ridondanti nella configurazione globale –