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 :
@Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.cors(); } }
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!