>  기사  >  Java  >  Spring Security에서 \"401 No \'Access-Control-Allow-Origin\' 헤더\" 오류를 수정하는 방법은 무엇입니까?

Spring Security에서 \"401 No \'Access-Control-Allow-Origin\' 헤더\" 오류를 수정하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 16:08:02587검색

How to Fix the

Spring Security CORS 필터

문제

기존 프로젝트에 Spring Security를 ​​추가하면 "401 No 'Access-Control-Allow- 요청한 리소스에 원본 헤더가 있습니다." 오류가 발생했습니다. 이는 Access-Control-Allow-Origin 헤더가 응답에 추가되지 않았기 때문에 발생합니다.

해결 방법

이 문제를 해결하려면 Spring Security 4.1부터 CORS 지원을 활성화하는 올바른 방법은 다음과 같습니다. 다음과 같습니다:

WebConfig에서:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
    }
}

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

잘못된 솔루션

다음과 같은 잘못된 해결 방법을 사용하지 마세요.

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

위 내용은 Spring Security에서 \"401 No \'Access-Control-Allow-Origin\' 헤더\" 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.