Rumah > Java > javaTutorial > 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
Lepaskan: 2024-10-31 16:08:02
asal
741 orang telah melayarinya

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");
    }
}
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan