Maison >interface Web >js tutoriel >Comment corriger les erreurs de code d'état « 0 » dans les requêtes Spring Boot AJAX avec Spring Security ?

Comment corriger les erreurs de code d'état « 0 » dans les requêtes Spring Boot AJAX avec Spring Security ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-30 17:18:12355parcourir

How to Fix

Comment résoudre les problèmes CORS avec Spring Boot et Spring Security

La configuration CORS (Cross-Origin Resource Sharing) est essentielle pour activer les requêtes d’origine dans les applications Spring Boot. Cependant, lors de l'utilisation de Spring Security avec la prise en charge CORS, des réponses incorrectes du serveur peuvent survenir en raison des restrictions du navigateur.

Problème :

Lors de l'exécution d'une requête AJAX avec Spring Boot et Spring Security, un objet XMLHttpRequest peut recevoir un code d'état "0" avec un corps de réponse vide au lieu d'un code d'état HTTP approprié comme 401.

Cause :

Ce problème résulte d'un conflit entre le comportement de redirection de Spring Security pendant le processus d'authentification et l'absence d'en-têtes CORS dans la requête initiale.

Solution :

Spring Security exploite désormais Spring MVC CORS soutien. Pour résoudre ce problème :

  1. Activer la prise en charge Spring Security CORS :
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors();
    }
}
  1. Configuration globale CORS (facultatif) :

Si vous le souhaitez, vous pouvez configurer des règles CORS globales à l'aide d'un CorsConfigurationSource bean :

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().and();
    }

    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", new CorsConfiguration().applyPermitDefaultValues());
        return source;
    }
}

En activant la prise en charge de Spring Security CORS, il exploitera la configuration CORS existante dans Spring MVC et garantira que les en-têtes CORS appropriés sont ajoutés aux réponses.

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