COCO 프로젝트 중에 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;
}