본문 바로가기

카테고리 없음

브라우저에서 domain이 같은데 쿠키가 안넘어오는 경우

반응형

오늘 개발을 하면서 알게된 것에 대해 공유해보려고 한다.

브라우저에서 쿠키는 지정된 도메인이 내에서 쿠키를 공유한다. 그런데 신규 사이트에서 쿠키를 이용하여 로그인 토큰을 공유하는데, 같은 서브 도메인인데도 어느 곳에는 쿠키가 넘어오고 어디는 넘어오지 않는 문제가 있었다.

 

쿠키의 Domain 속성

쿠키가 설정될 때 Domain 속성이 명시적으로 지정되지 않았다면, 기본적으로 생성된 도메인에서만 접근이 가능합니다. 예를 들어 example.com에서 설정한 쿠키는 기본적으로 example.com에서만 접근할 수 있습니다. 서브 도메인 간에 쿠키를 공유하려면 Domain=.example.com 형태로 설정해야 합니다.

 

결론부터 말하면 원인은 https에서는 정상적으로 넘어왔고, http에서는 넘어오지 않았던 것이고, 그 원인은 쿠키의 Secure 속성 때문이었다.

쿠키의 Secure 속성

  • Secure 속성은 HTTPS 연결을 통해서만 쿠키가 전송되도록 제한합니다. 만약 Secure 속성이 설정된 쿠키를 HTTP로 접근하려 하면 쿠키가 전송되지 않습니다.
    즉, HTTPS를 사용하고 있는 경우 Secure 속성을 함께 설정해야 정상적으로 서브 도메인 간 쿠키가 전송될 수 있습니다.
  • 내가 가져오려는 쿠키는 Secure 속성이 설정되어 있었다.

크롬 개발자도구 - Application 탭 - Secure 속성

 

임시로 Secure와 SameSite 체크를 해제하면 같은 서브도메인을 가진 다른 사이트에서도 해당 쿠키를 확인할 수 있다.

크롬 개발자도구 - Application 탭 - Secure 및 SameSite 속성

 

SameSite까지 해제해야하는 이유는 아래에서 확인할 수 있다.

SameSite 속성

SameSite 속성은 쿠키가 다른 도메인 또는 서브 도메인에서의 요청에 대해 어떻게 처리될지를 결정합니다.

  • Strict: 동일한 사이트 내에서만 쿠키가 전송됩니다.
  • Lax: 기본적으로는 동일한 사이트에서만 전송되지만, 일부 예외적인 경우 다른 사이트에서도 전송됩니다.
  • None: 모든 도메인에 전송이 가능합니다. 그러나 이 경우 보안을 위해 Secure 속성이 필수로 설정되어야 합니다.

즉, SameSite를 None으로 설정하면, Secure 설정이 필수이기 때문에 함께 제거를 해줘야 한다.

반응형