Maison > Java > javaDidacticiel > le corps du texte

Pourquoi est-ce que j'obtiens une erreur « Aucun en-tête « Access-Control-Allow-Origin » n'est présent » après l'ajout de Spring Security ?

DDD
Libérer: 2024-10-31 01:43:29
original
354 Les gens l'ont consulté

Why Am I Getting a

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

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

Remarques supplémentaires :

  • Évitez d'utiliser http.authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll(); ou web.ignoring().antMatchers(HttpMethod.OPTIONS);, car ce sont des solutions incorrectes.
  • Assurez-vous que votre filtre CORS est positionné après SecurityContextPersistenceFilter et avant LogoutFilter dans la chaîne de filtres.
  • Vérifiez que l'en-tête Access-Control-Allow-Methods inclut les verbes HTTP nécessaires : GET, PUT, POST, etc.
  • Si vous rencontrez toujours l'erreur CORS, consultez les journaux de votre application pour toute information supplémentaire qui pourrait vous aider. identifier le problème.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!