기존 프로젝트에 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; } }
다음과 같은 잘못된 해결 방법을 사용하지 마세요.
위 내용은 Spring Security에서 \'401 No \'Access-Control-Allow-Origin\' 헤더\' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!