Heim  >  Artikel  >  Java  >  Warum erhalte ich nach dem Hinzufügen von Spring Security die Fehlermeldung „Kein Header „Access-Control-Allow-Origin“ vorhanden““?

Warum erhalte ich nach dem Hinzufügen von Spring Security die Fehlermeldung „Kein Header „Access-Control-Allow-Origin“ vorhanden““?

DDD
DDDOriginal
2024-10-31 01:43:29339Durchsuche

Why Am I Getting a

Spring Security CORS-Filter: Fehlerbehebung „Es ist kein ‚Access-Control-Allow-Origin‘-Header vorhanden“

Erklärung

Das Hinzufügen von Spring Security zu einem vorhandenen Projekt kann bei CORS-Anfragen (Cross-Origin Resource Sharing) den Fehler „Kein ‚Access-Control-Allow-Origin‘-Header vorhanden“ auslösen. Dieser Fehler tritt auf, weil der Access-Control-Allow-Origin-Antwortheader nicht zu Anfragen hinzugefügt wird.

Lösung

Methode 1:

Aktualisieren Sie Ihren Code, um die integrierte CORS-Unterstützung von Spring Security zu nutzen. Fügen Sie Ihrer Anwendung die folgende Konfiguration hinzu:

<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>

Methode 2:

Wenn Sie mehr Kontrolle über die CORS-Konfiguration wünschen, verwenden Sie den folgenden Ansatz:

<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>

Zusätzliche Hinweise:

  • Vermeiden Sie die Verwendung von http.authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll(); oder web.ignoring().antMatchers(HttpMethod.OPTIONS);, da es sich um falsche Lösungen handelt.
  • Stellen Sie sicher, dass Ihr CORS-Filter nach SecurityContextPersistenceFilter und vor LogoutFilter in der Filterkette positioniert ist.
  • Stellen Sie sicher, dass der Header „Access-Control-Allow-Methods“ die erforderlichen HTTP-Verben enthält: GET, PUT, POST usw.
  • Wenn der CORS-Fehler weiterhin auftritt, überprüfen Sie die Protokolle Ihrer Anwendung auf zusätzliche Informationen, die hilfreich sein könnten Lokalisieren Sie das Problem.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich nach dem Hinzufügen von Spring Security die Fehlermeldung „Kein Header „Access-Control-Allow-Origin“ vorhanden““?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn