[백업][가리사니] 쿠키(세션id) 방식에서 jwt 변경 시 따라오는 장점. (cors)
ci/cd, cloud, docker, nomad

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

CORS를 위해서는 서버에선 아래와 같이 작성해야 한다.

  • 언어마다, 프레임워크마다 작성법이 다르겠지만 그건 중요한게 아니니 신경쓰지말자.
fun corsConfigurationSource(): CorsConfigurationSource {
        val configuration = CorsConfiguration()
        configuration.allowedOrigins = listOf("*")
        configuration.allowedMethods = listOf("*")
        configuration.allowedHeaders = listOf("*")
        configuration.allowCredentials = true
        val source = UrlBasedCorsConfigurationSource()
        source.registerCorsConfiguration("/**", configuration)
        return source
    }

예를들어서 위와 같이 사용하는 경우 정책 오류가 발생할 것이다. 왜냐하면 allowedOrigins 이 * 이면서 동시에 allowCredentials(쿠키)를 허용할 수 없기 때문이다.

하지만 JWT를 사용하는 경우는 여러분이 allowedHeaders 에 정의한 커스텀 이름만 허용하면 되기 때문에 allowCredentials를 제외하고 사용하면 된다.

fun corsConfigurationSource(): CorsConfigurationSource {
        val configuration = CorsConfiguration()
        configuration.allowedOrigins = listOf("*")
        configuration.allowedMethods = listOf("*")
        configuration.allowedHeaders = listOf("*")
        val source = UrlBasedCorsConfigurationSource()
        source.registerCorsConfiguration("/**", configuration)
        return source
    }

참고