Lors de l'utilisation de Spring Boot et Spring Security tout en prenant en charge CORS, certains problèmes de configuration peuvent survenir, entraînant des résultats inattendus.
Un de ces problèmes est rencontré lors d'une requête GET avec XMLHttpRequest et de l'utilisation du support CORS, où un code d'état 200 est renvoyé malgré des informations d'authentification incorrectes. Ce comportement introduit des divergences dans la gestion des codes d'état HTTP sur le front-end.
Pour résoudre ce problème, il est crucial d'activer explicitement la prise en charge CORS dans Spring Security. Ceci est accompli en configurant CORS dans Spring Security, ce qui lui permet d'exploiter la configuration Spring MVC CORS.
Pour les applications utilisant les annotations @CrossOrigin au niveau du contrôleur, il suffit d'activer la prise en charge Spring Security CORS. Le code ci-dessous le démontre :
@EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.cors().and()... } }
Pour les utilisateurs optant pour une configuration CORS globale, il est nécessaire de définir un bean CorsConfigurationSource.
@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 utilisant cette approche, la prise en charge de CORS est effectivement activé dans Spring Boot et Spring Security, résolvant le problème où les en-têtes CORS appropriés n'étaient pas ajoutés lors des contrôles d'authentification. Reportez-vous à la documentation officielle de Spring Security sur CORS pour plus de détails.
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!