프론트에서 API를 요청하는데, 크롬 브라우저에 아래와 같은 오류가 발생했다.
Access to XMLHttpRequest at '요청 주소' from origin 'http://localhost:5000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
CORS 정책을 Servlet에서 addCorsMappings를 재정의하여 설정해줬다고 생각했는데, 인증 부분을 Securiy에서 처리했기 때문에 CORS 정책을 Security에서 처리해줘야 된다.
SecurityConfig.java에 아래와 같은 설정을 해줘야된다.
1. CORS 설정 bean 추가
- bean을 추가 한다.
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.addAllowedOrigin("*");
configuration.addAllowedMethod("*");
configuration.addAllowedHeader("*");
configuration.setAllowCredentials(true);
configuration.setMaxAge(3600L);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
2. configure에 corsConfigurationSourced 메서드 추가
.and().cors().configurationSource(corsConfigurationSource())
오늘 CORS 정책때문에 애를 많이 먹었다. Back - Front를 분리해서 작업하는 방식을 처음 접하는데, CORS 정책 설정이 정말 중요한 것 같다.
'Spring > Spring Security' 카테고리의 다른 글
[Spring Security] 인증 절차 어떻게 시작되고 진행되는지 알아보자 (0) | 2021.07.28 |
---|