Tenho uma classe de configuração do Spring Boot para lidar com CORS. Essa classe, teoricamente, permite todas as origens, de todos os métodos e com todos os headers.
@Configuration
public class CorsConfiguration implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedMethods("*").allowedOrigins("*").allowedHeaders("*");
}
}
Todavia, no front end, recebo:
Access to XMLHttpRequest at ‘http://172.17.178.81:3000/api/v1/token’ from origin ‘http://172.17.0.75:8002’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
Quando eu anoto meu endpoint com @CrossOrigin, funciona normalmente.
Gostaria de saber o que pode ser feito. Não acredito que anotar todo endpoint com @CrossOrigin seja o certo a ser feito.
Parece que tem algumas versões do spring que não adiciona o OPTIONS por padrão quando usa o *. E tem situações que uma requisição OPTIONS é feita antes da requisição original.
Segundo esse guia, na parte 6.2, se a anotação @EnableWebMvc estiver presente na aplicação, o SpringFox (parte da documentação do projeto) não consegue gerar o UI do Swagger. Sem a anotação, tenho documentação mas meu CORS não funciona. Com a anotação, o CORS funciona mas a documentação não.