[백업][가리사니] 쿠키(세션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
    }

참고

  • https://gs.saro.me/2023/02/04/%EB%B0%B1%EC%97%85-%EA%B0%80%EB%A6%AC%EC%82%AC%EB%8B%88-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%ED%94%8C%EB%A0%88%EC%96%B4%EB%A1%9C-%EB%B0%B1%EC%97%94%EB%93%9C-%ED%94%84%EB%A1%9D%EC%8B%9C-%EB%B0%8F-%ED%94%84%EB%A1%A0%ED%8A%B8-%EB%B6%84%EB%A6%AC/html