首頁 >web前端 >js教程 >如何使用 Spring Security 修復 Spring Boot AJAX 請求中的「0」狀態碼錯誤?

如何使用 Spring Security 修復 Spring Boot AJAX 請求中的「0」狀態碼錯誤?

Patricia Arquette
Patricia Arquette原創
2024-11-30 17:18:12292瀏覽

How to Fix

如何使用Spring Boot 和Spring Security 解決CORS 問題

設定CORS(跨來源資源共享)對於啟用跨來源資源共享至關重要Spring Boot 應用程式中的原始請求。但是,當使用支援 CORS 的 Spring Security 時,由於瀏覽器限制,可能會出現錯誤的伺服器回應。

問題:

同時使用Spring Boot 和Spring Boot 執行AJAX 請求時Spring Security,XMLHttpRequest 物件可能會收到帶有空白回應正文的「0」狀態程式碼,而不是正確的HTTP狀態代碼,例如401.

原因:

此問題是由於身份驗證過程中Spring Security 的重定向行為與初始請求中缺少CORS 標頭之間的衝突而引起的。

解決方案:

現在使用 Spring Security利用 Spring MVC CORS 支援。要解決此問題:

  1. 啟用Spring Security CORS 支援:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors();
    }
}
  1. CORS 全域設定(可選) :

如果需要,您可以使用CorsConfigurationSource bean 配置全域CORS 規則:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().and();
    }

    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", new CorsConfiguration().applyPermitDefaultValues());
        return source;
    }
}

透過啟用Spring Security CORS 支持,它將利用Spring MVC 中利用Spring MVC的CORS 配置,並確保將正確的CORS 標頭新增至回應。

以上是如何使用 Spring Security 修復 Spring Boot AJAX 請求中的「0」狀態碼錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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