Filtre CORS Spring Security : Dépannage « Aucun en-tête 'Access-Control-Allow-Origin' n'est présent »
Explication
L'ajout de Spring Security à un projet existant peut déclencher une erreur « Aucun en-tête 'Access-Control-Allow-Origin' n'est présent » lors des requêtes CORS (Cross-Origin Resource Sharing). Cette erreur se produit car l'en-tête de réponse Access-Control-Allow-Origin n'est pas ajouté aux requêtes.
Solution
Méthode 1 :
Mettez à jour votre code pour utiliser la prise en charge CORS intégrée de Spring Security. Ajoutez la configuration suivante à votre application :
<code class="java">@Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH"); } }</code>
Méthode 2 :
Si vous souhaitez plus de contrôle sur la configuration CORS, utilisez l'approche suivante :
<code class="java">@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { 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; } }</code>
Remarques supplémentaires :
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!