如何使用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 支援。要解決此問題:
@Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.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中文網其他相關文章!