[Spring] CORS 설정하기

19·2022년 7월 22일
1

Spring

목록 보기
7/29

COCO 프로젝트 중에 CORS 처리한 것을 수정하다가 알게 된 것이 있어서 적는당

CORS?

변경 전

| WebConfig.java

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("*")
                .allowedHeaders("*")
                .allowCredentials(true)
                .maxAge(3000);
    }
}

기존에 우리 프로젝트의 CORS 설정한 부분이다.
.allowedOriginPatterns("*")로 인해 모든 도메인에 대해서 접근이 열려있는 것을 확인할 수 있다.

  • .allowedOriginPatterns()에 허용할 도메인을 기입하는 것으로 변경했다


변경 후

| WebConfig.java

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("https://www.cocoding.xyz")
                .allowedMethods("*")
                .allowedHeaders("*")
                .allowCredentials(true)
                .maxAge(3000);
    }
}
  • 우리 프로젝트의 도메인인 https://www.cocoding.xyz에만 자원 공유를 허락하도록 했다.

현재 우리 프로젝트는 Security도 사용하고 있으므로, Security에서도 CORS 설정을 허용해야 한다.

| SecurityConfiguration.java

@Override
protected void configure(HttpSecurity http) throws Exception {
    ...
    http.cors(); // cors 허용
    ...
}

// Security에서 CORS 허용
@Bean
public CorsConfigurationSource corsConfigurationSource() {
    final CorsConfiguration configuration = new CorsConfiguration();
    configuration.setAllowedOrigins(List.of("https://www.cocoding.xyz"));
    configuration.addAllowedHeader("*");
    configuration.addAllowedMethod("*");
    configuration.setAllowCredentials(true);

    final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", configuration);
    return source;
}
profile
하나씩 차근차근

0개의 댓글