Apabila Spring Security ditambahkan pada projek sedia ada, "401 No 'Access-Control-Allow- Pengepala Origin' hadir pada sumber yang diminta" ralat ditemui. Ini berlaku kerana pengepala Access-Control-Allow-Origin tidak ditambahkan pada respons.
Untuk menyelesaikan isu ini, sejak Spring Security 4.1, cara yang betul untuk mendayakan sokongan CORS ialah seperti berikut:
Dalam WebConfig:
@Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH"); } }
Dalam 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; } }
Elakkan menggunakan penyelesaian yang tidak betul berikut:
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'401 Tiada \'Access-Control-Allow-Origin\'' dalam Keselamatan Spring?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!