Maison > Java > javaDidacticiel > 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
Libérer: 2024-10-31 16:08:02
original
774 Les gens l'ont consulté

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");
    }
}
Copier après la connexion

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;
    }
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal