개발블로그

Spring WebFlux CORS Configuration 본문

Spring

Spring WebFlux CORS Configuration

개발자수니 2019. 5. 26. 03:58

Spring Webflux with java로 이용할 때에는 WebFluxConfigurer를 구현했다. 

@Configuration
@EnableWebFlux
class WebConfig: WebFluxConfigurer
{
    override fun addCorsMappings(registry: CorsRegistry)
    {
        registry.addMapping("/**")
                .allowedOrigins("*") // any host or put domain(s) here
                .allowedMethods("GET","POST","OPTIONS") // put the http verbs you want allow
                .allowedHeaders("*") // put the http headers you want allow
                .allowCredentials(true)
    }
}

그랬을 때, CORS 문제는 없었다. 

 

kotlin에서도 문제 없을거라 생각하고 동일하게 사용했는데,

post 요청에 대해서만 CORS 문제가 계속 발생했다. 

 

get 요청에 대해서는 문제가 없는걸로 봐서는,

allowedHeader가 계속 적용이 안되는 느낌이었다..

 

그런 와중 Baeldung의 문서를 다시 읽었다.

위 방법보다는 Filter를 설정하는 방법을 권장한다고 하여, 바꿔보았다.

@Component
class CorsFilter {
    @Bean
    fun corsWebFilter(): CorsWebFilter {
        val corsConfig = CorsConfiguration()
        corsConfig.addAllowedOrigin("*")
        corsConfig.maxAge = 8000L
        corsConfig.addAllowedMethod(HttpMethod.GET)
        corsConfig.addAllowedMethod(HttpMethod.POST)
        corsConfig.addAllowedMethod(HttpMethod.OPTIONS)
        corsConfig.addAllowedHeader("Content-Type")

        val source = UrlBasedCorsConfigurationSource()
        source.registerCorsConfiguration("/**", corsConfig)

        return CorsWebFilter(source)
    }
}

 

그랬더니, 잘 동작한다..

 

정확한 원인을 모르고, 대안을 찾아서 굉장히 찝찝하다ㅠㅠ..

Comments