> Java > java지도 시간 > Spring Security를 ​​추가한 후 \'No \'Access-Control-Allow-Origin\' Header is Present\' 오류가 발생하는 이유는 무엇입니까?

Spring Security를 ​​추가한 후 \'No \'Access-Control-Allow-Origin\' Header is Present\' 오류가 발생하는 이유는 무엇입니까?

DDD
풀어 주다: 2024-10-31 01:43:29
원래의
425명이 탐색했습니다.

Why Am I Getting a

Spring Security CORS 필터: "'Access-Control-Allow-Origin' 헤더가 없습니다" 문제 해결

설명

기존 프로젝트에 Spring Security를 ​​추가하면 CORS(Cross-Origin Resource Sharing) 요청 중에 "No 'Access-Control-Allow-Origin' 헤더가 존재합니다." 오류가 발생할 수 있습니다. 이 오류는 요청에 Access-Control-Allow-Origin 응답 헤더가 추가되지 않았기 때문에 발생합니다.

해결책

방법 1:

Spring Security의 내장 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>
로그인 후 복사

방법 2:

CORS 구성을 더 효과적으로 제어하려면 다음 접근 방식을 사용하세요.

<code class="java">@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        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;
    }
}</code>
로그인 후 복사

추가 참고 사항:

  • http.authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll(); 사용을 피하세요. 또는 web.ignoring().antMatchers(HttpMethod.OPTIONS);는 잘못된 솔루션입니다.
  • CORS 필터가 필터 체인에서 SecurityContextPersistenceFilter 뒤, LogoutFilter 앞에 위치하는지 확인하세요.
  • Access-Control-Allow-Methods 헤더에 필수 HTTP 동사(GET, PUT, POST 등)가 포함되어 있는지 확인하세요.
  • CORS 오류가 계속 발생하면 애플리케이션 로그에서 도움이 될 수 있는 추가 정보를 확인하세요. 문제를 정확히 찾아보세요.

위 내용은 Spring Security를 ​​추가한 후 \'No \'Access-Control-Allow-Origin\' Header is Present\' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿