Spring Security CORS 필터: 401 오류 문제 해결
기존 프로젝트에 Spring Security를 구현했음에도 불구하고 계속해서 401 "No'가 발생합니다. 서버에서 Access-Control-Allow-Origin' 헤더' 오류가 발생했습니다. 이는 응답에 해당 헤더가 첨부되지 않았기 때문에 발생합니다.
이 문제를 해결하기 위해 로그아웃 필터 이전에 필터 체인에 사용자 정의 필터를 추가하려고 시도했습니다. 그러나 귀하의 요청에는 필터가 적용되지 않는 것 같습니다. 기존 구성과 잠재적인 문제를 살펴보겠습니다.
보안 구성:
보안 구성은 올바르게 구성된 CORS 구성을 활용하고 있습니다. 그러나 컨트롤러의 @CrossOrigin 주석이 이 구성과 충돌하여 예측할 수 없는 동작을 초래할 수 있다는 점에 유의하는 것이 중요합니다.
필터 구현:
필터가 OncePerRequestFilter로 올바르게 구성되어야 합니다. 응답에 CORS 헤더를 추가하는 것을 포함하여 필터 작업에 필요한 방법을 정의합니다.
필터 등록:
필터가 Spring Boot를 통해 등록되고 있으며 이는 확인되었습니다. 로그 항목으로. 필터는 "/*"에 매핑되고 필터 체인의 위치가 적절합니다.
생성된 필터 체인:
생성된 필터 체인 출력은 CORS가 필터가 목록에 없습니다. 이것이 적용되지 않는 이유를 설명할 수 있습니다.
응답 헤더:
서버에서 수신한 전체 응답 헤더를 제공하지 않았습니다. 이러한 헤더를 검사하면 응답에 있는 실제 CORS 헤더에 대한 통찰력을 얻을 수 있습니다.
편집 1:
@Piotr Sołtysiak이 제안한 솔루션이 시도되었지만 문제를 해결하지 못했습니다. 생성된 필터 체인에 CORS 필터가 없고, 401 오류가 지속되었습니다.
해결 방법:
Spring Security 4.1 이상에서는 CORS 지원 구현이 변경되었습니다. 선호되는 접근 방식은 다음 구성을 사용하는 것입니다.
<code class="java">@Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH"); } }</code>
<code class="java">@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.cors(); } @Bean public CorsConfigurationSource corsConfigurationSource() { // ... (Define the CORS configuration and return a UrlBasedCorsConfigurationSource) } }</code>
다음과 같은 잘못된 접근 방식을 사용하지 마세요.
이러한 메서드는 더 이상 사용되지 않으며 불완전한 CORS 구현을 제공합니다.
위 내용은 내 Spring Security CORS 필터가 'Access-Control-Allow-Origin' 헤더를 추가하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!