TIL
[Spring] CORS 허용하는 방법
승무_
2023. 2. 10. 19:40
@RequiredArgsConstructor
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
private final LoginUserIdArgumentResolver loginUserIdArgumentResolver;
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:3000")
.allowedMethods("OPTIONS", "GET", "POST", "PUT", "DELETE","PATCH");
}
}
WebMvcConfigurer 인터페이스가 가지고 있는 addCorsMappings 메소드를 오버라이딩 한 후에 위와 같이 http://localhost:3000에 대해서 접근할 수 있는 권한을 주면 됩니다. 위와 같이 설정만 해주면 너무나도 쉽게 SOP를 바로 해결할 수 있습니다.
하지만.. 위와 같이 설정을 해주었어도 SOP 문제가 해결되지 않았습니다. 이 때 왜 SOP 문제가 사라지지 않는거지? 서버에서는 분명 접근 권한을 주었는데... 라는 생각이 머리속을 지배하면서 왜 안되는지 원인을 찾기가 쉽지 않았습니다. 결국 많은 삽질과 CORS 동작 원리를 다시 보면서 CORS 이슈가 사라지지 않는 원인을 찾았는데요. 원인은 바로 제가 Spring Security를 사용하고 있기 때문이었습니다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().configurationSource(request -> {
var cors = new CorsConfiguration();
cors.setAllowedOrigins(List.of("http://localhost:3000"));
cors.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "OPTIONS","PATCH"));
cors.setAllowedHeaders(List.of("*"));
return cors;
});
}
Spring security에서도 http://localhost:3000에 대해서 접근할 수 있는 권한을 주었더니 해결되었습니다.