Rumah  >  Artikel  >  Java  >  Bagaimana untuk Membetulkan Ralat \"401 Tiada \'Access-Control-Allow-Origin\'" dalam Keselamatan Spring?

Bagaimana untuk Membetulkan Ralat \"401 Tiada \'Access-Control-Allow-Origin\'" dalam Keselamatan Spring?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 16:08:02587semak imbas

How to Fix the

Penapis CORS Spring Security

Masalah

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.

Penyelesaian

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;
    }
}

Penyelesaian Salah

Elakkan menggunakan penyelesaian yang tidak betul berikut:

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

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn