Si estás usando Spring Data Rest (por ejemplo con @RepositoryRestResource) y estás tratando de configurar CORS en tu API con spring boot quizá hayas probado implementando el método WebMvcConfigurer::addCorsMappings y no te ha funcionado
Eso es porque todas las respuestas que puedas encontrar en google te dirán que uses ese método o añadir la anotación @CrossOrigin a tus controladores. En mi caso trataba de evitar la anotación para no tener que ir controlador por controlador cambiando la anotación, a parte de que quería configurar el allowedHost desde el application.yml.
Entonces, la solución que encontré es implementar el método de RepositoryRestConfigurer:
@Configuration
public static class GlobalRepositoryRestConfigurer implements RepositoryRestConfigurer {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.getCorsRegistry().addMapping("/**")
.allowedOrigins("http://localhost:3000")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH")
.allowCredentials(true)
.maxAge(3600);
}
}
Ojocuidado porque si tienes controladores de ambos tipos (Data Rest y WebMVC) tendrá que tener los dos métodos.