es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Habilitando acceso de origen cruzado en una aplicación Spring Webflux.

Recientemente cambié mi aplicación de webmvc a webflux e intenté configurar esto:

@Configuration
@EnableWebFlux
public class WebConfig implements WebFluxConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*");
    }

    @Bean
    CorsWebFilter corsWebFilter() {
        var corsConfig = new CorsConfiguration();
        corsConfig.setAllowedOrigins(List.of("*"));

        var source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", corsConfig);

        return new CorsWebFilter(source);
    }
}

También intenté agregar <code>@CrossOrigin</code> a mi controlador.

Pero aún no estoy obteniendo los encabezados de respuesta de origen cruzado.

¿Alguien conoce la solución?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible que el problema se deba a la caché del navegador. Para confirmar esto, puede intentar abrir el navegador en modo incognito o borrar la caché y volver a intentarlo.

    Si el problema persiste, asegúrese de que su filtro CORS se esté registrando correctamente. Puede hacer esto agregando una entrada de registro a su filtro que debería imprimirse en la consola. Si no ve esta entrada de registro, entonces su filtro no se está registrando.

    Además, también puede intentar establecer explícitamente los encabezados y métodos permitidos en su configuración CORS como se muestra a continuación:

    @Configuration
    @EnableWebFlux
    public class WebConfig implements WebFluxConfigurer {
    
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("*")
                    .allowedMethods("PUT", "GET", "POST", "DELETE")
                    .allowedHeaders("*")
                    .maxAge(3600);
        }
    
        @Bean
        CorsWebFilter corsWebFilter() {
            var corsConfig = new CorsConfiguration();
            corsConfig.setAllowedOrigins(List.of("*"));
            corsConfig.setAllowedMethods(List.of("PUT", "GET", "POST", "DELETE"));
            corsConfig.setAllowedHeaders(List.of("*"));
            corsConfig.setMaxAge(3600L);
    
            var source = new UrlBasedCorsConfigurationSource();
            source.registerCorsConfiguration("/**", corsConfig);
    
            return new CorsWebFilter(source);
        }
    }
    

    ¡Espero que esto ayude!

Comments are closed.