2
respostas

CORS

Quando adicionei o GATEWAY, estou tomando erro de cors! Como eu libero o gateway para receber requisição do angular sem ser barrado?

Em aplicações normais, basta colocar:

  @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD", "TRACE", "CONNECT");
    }
    
    

Mas com o gateway, isso não está funcionando! Como posso resolver de forma correta? sem ter que fazer gambiarra com proxy no angular? Quero literalmente liberar o gateway

2 respostas

Ola!

No Spring Cloud Gateway, a parada do CORS é um pouquinho diferente . Tu precisa criar um bean do tipo RouteLocator na classe principal do teu projeto (aquela que tem o método main). Esse bean é o q defineas rotas do Gateway e dá pra meter umas configs de CORS nele

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
            .route("path_route", r -> r.path("/**")
                    .filters(f -> f.cors(c -> c
                            .allowCredentials(true)
                            .allowedOrigins("*")
                            .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD", "TRACE", "CONNECT")))
                    .uri("lb://nome-do-seu-servico"))
            .build();
}

Não está funcionando, está com erro de compilação

Insira aqui a descrição dessa imagem para ajudar na acessibilidade