首頁  >  文章  >  Java  >  如何修復 Spring Security 中的“401 No \'Access-Control-Allow-Origin\' header”錯誤?

如何修復 Spring Security 中的“401 No \'Access-Control-Allow-Origin\' header”錯誤?

Patricia Arquette
Patricia Arquette原創
2024-10-31 16:08:02587瀏覽

How to Fix the

Spring Security CORS 過濾器

問題

當Spring Security 加入現有專案時,出現「401 No 'Access-Control-Allow -所請求的資源上存在Origin' 標頭」遇到錯誤。發生這種情況是因為 Access-Control-Allow-Origin 標頭未加入到回應中。

解決方案

要解決此問題,從Spring Security 4.1 開始,啟用CORS 支援的正確方法是如下:

在WebConfig 中:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
    }
}

在SecurityConfig 中:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
//        http.csrf().disable();
        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;
    }
}

不正確的解決方案

避免使用以下不正確的解決方案:

  • http.authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll();
  • web. ignoring().antMatchers(HttpMethod.OPTIONS);

以上是如何修復 Spring Security 中的“401 No \'Access-Control-Allow-Origin\' header”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn