Maison  >  Article  >  Java  >  Comment corriger l'erreur "401 No \'Access-Control-Allow-Origin\' header\" dans Spring Security ?

Comment corriger l'erreur "401 No \'Access-Control-Allow-Origin\' header\" dans Spring Security ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 16:08:02587parcourir

How to Fix the

Filtre CORS Spring Security

Problème

Lorsque Spring Security est ajouté à un projet existant, un message "401 No 'Access-Control-Allow- L'erreur "L'en-tête d'origine est présent sur la ressource demandée" est rencontrée. Cela se produit car un en-tête Access-Control-Allow-Origin n'est pas ajouté à la réponse.

Solution

Pour résoudre ce problème, depuis Spring Security 4.1, la bonne façon d'activer la prise en charge CORS est comme suit :

Dans WebConfig :

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

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

Dans SecurityConfig :

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
//        http.csrf().disable();
        http.cors();
    }

    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        final CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(ImmutableList.of("*"));
        configuration.setAllowedMethods(ImmutableList.of("HEAD",
                "GET", "POST", "PUT", "DELETE", "PATCH"));
        configuration.setAllowCredentials(true);
        configuration.setAllowedHeaders(ImmutableList.of("Authorization", "Cache-Control", "Content-Type"));
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
}

Solutions incorrectes

Évitez d'utiliser les solutions incorrectes suivantes :

  • http.authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll();
  • web. ignorer().antMatchers(HttpMethod.OPTIONS);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn