Cara Menyelesaikan Isu CORS dengan Spring Boot dan Keselamatan Spring
Mengkonfigurasi CORS (Cross-Origin Resource Sharing) adalah penting untuk membolehkan cross- permintaan asal dalam aplikasi Spring Boot. Walau bagaimanapun, apabila menggunakan Spring Security dengan sokongan CORS, respons pelayan yang salah mungkin berlaku disebabkan oleh sekatan penyemak imbas.
Masalah:
Apabila melaksanakan permintaan AJAX dengan kedua-dua Spring Boot dan Spring Security, objek XMLHttpRequest mungkin menerima kod status "0" dengan badan respons kosong dan bukannya kod status HTTP yang betul seperti 401.
Punca:
Isu ini timbul daripada konflik antara tingkah laku ubah hala Spring Security semasa proses pengesahan dan kekurangan pengepala CORS dalam permintaan awal.
Penyelesaian:
Spring Security sekarang memanfaatkan sokongan Spring MVC CORS. Untuk menyelesaikan isu ini:
@Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.cors(); } }
Jika mahu, anda boleh mengkonfigurasi peraturan CORS global menggunakan CorsConfigurationSource bean:
@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; } }
Dengan mendayakan sokongan Spring Security CORS, ia akan memanfaatkan konfigurasi CORS sedia ada dalam Spring MVC dan memastikan bahawa pengepala CORS yang betul ditambahkan pada respons.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat Kod Status \'0\' dalam Permintaan AJAX Boot Spring dengan Keselamatan Spring?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!