ホームページ  >  記事  >  Java  >  Spring Security を追加した後に「No \'Access-Control-Allow-Origin' Header is Present」エラーが発生するのはなぜですか?

Spring Security を追加した後に「No \'Access-Control-Allow-Origin' Header is Present」エラーが発生するのはなぜですか?

DDD
DDDオリジナル
2024-10-31 01:43:29339ブラウズ

Why Am I Getting a

Spring Security CORS フィルター: 「「Access-Control-Allow-Origin」ヘッダーが存在しません」のトラブルシューティング

説明

既存のプロジェクトに Spring Security を追加すると、Cross-Origin Resource Sharing (CORS) リクエスト中に「'Access-Control-Allow-Origin' ヘッダーが存在しません」エラーが発生する可能性があります。このエラーは、Access-Control-Allow-Origin 応答ヘッダーがリクエストに追加されていないために発生します。

解決策

方法 1:

Spring Security の組み込み CORS サポートを使用するようにコードを更新します。次の構成をアプリケーションに追加します。

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

方法 2:

CORS 構成をさらに制御したい場合は、次のアプローチを使用します。

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

追加の注意:

  • http.authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll(); の使用は避けてください。
  • CORS フィルターがフィルター チェーンの SecurityContextPersistenceFilter の後、LogoutFilter の前に配置されていることを確認してください。
  • Access-Control-Allow-Methods ヘッダーに必要な HTTP 動詞 (GET、PUT、POST など) が含まれていることを確認します。
  • それでも CORS エラーが発生する場合は、アプリケーションのログで役立つ追加情報がないか確認してください。問題を特定します。

以上がSpring Security を追加した後に「No \'Access-Control-Allow-Origin' Header is Present」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。