Olá a todos.
Estou fazendo uma aplicação que usa Spring Boot (2.1.5.RELEASE) no back-end e Vue.JS no front.
Quando faço uma requisição GET, retorno para o front essa resposta:
[Date:“Wed, 10 Jul 2019 18:11:54 GMT”, Server:“Apache/2.4.18 (Ubuntu)”, Vary:“Authorization”, Cache-Control:“no-cache, private”, X-Robots-Tag:“noindex”, Access-Control-Allow-Origin:"*", Access-Control-Allow-Methods:“POST, GET, PUT, PATCH, DELETE, OPTIONS”, Access-Control-Allow-Headers:“Authorization, Content-Type, Accept”, Access-Control-Allow-Credentials:“true”, Keep-Alive:“timeout=5, max=100”, Connection:“Keep-Alive”, Transfer-Encoding:“chunked”, Content-Type:“application/json”]
Mas tenho esse problema com o CORS:
Access to XMLHttpRequest at ‘http://localhost:3000/api/v1/empresas’ from origin ‘http://localhost:8080’ has been blocked by CORS policy: The ‘Access-Control-Allow-Origin’ header contains multiple values ‘*, *’, but only one is allowed.
Entendo que o problema é o valor multiplo do Access-Control-Allow-Origin, todavia, em momento nenhum eu estou declarando ele assim (vide resposta que retorno ao front)!
Alguém já passou por isso? Já vi inúmeros tópicos no SO, nenhum deles me ajudou. Entendi que o problema não está na request, e sim na response (mas ao mesmo tempo minha response está correta…)
Imagem da request no navegador:
Minha classe de configuração do CORS:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfiguration implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedMethods("*").allowedOrigins("*").allowedHeaders("*");
}
}
Meu controller:
@GetMapping(value = "empresas", produces = "application/json;charset=UTF-8")
public ResponseEntity listaEmpresa(@NotNull @RequestHeader String authorization) throws IOException {
tokenValidatorService.validaToken(authorization);
return companyModel.listaEmpresas(authorization);
}