Spring Security CORS 해결

Spring

Spring Security

CORS는 에러라고 볼 수 없다. 서버는 8080포트로 구동되고 프론트는 3000 포트로 구동된다면 서로 다른 포트에 의해 CORS 위반 에러가 난다고 볼 수 있다. 단순히 보안상의 이유이므로 어떠한 누구의 잘못도 없으므로 에러라고 보기엔 애매하다.

CORS는 Spring Security에 앞서 처리되어야 한다. 가장 쉬운 방법으로는 CorsFilter를 이용하여 해결할 수 있다.


protected void configure(HttpSecurity http) throws Exception {
        http
                .cors().configurationSource(corsConfigurationSource())
                .and()
                .csrf().disable()
                ~~~
}
@Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();

        configuration.setAllowedOriginPatterns(Arrays.asList("*"));
        configuration.setAllowedMethods(Arrays.asList("HEAD","POST","GET","DELETE","PUT"));
        configuration.setAllowedHeaders(Arrays.asList("*"));
        configuration.setAllowCredentials(true);

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }

아래의 메서드를 사용하여 Cors를 해결 할 수 있다.