본문 바로가기
TECH

도메인이 다를 때 Cookie 인식 방법 🍪

by Stella-Park 2025. 7. 1.
728x90

왜 도메인이 다르면 쿠키를 공유 못할까?

웹 브라우저는 보안을 위해 쿠키를 도메인마다 따로따로 관리하기 때문에

  • abc.com에 저장된 쿠키는 abc.com에서만 볼 수 있고
  • xyz.com에서는 그 쿠키를 못본다.

그래서 다른 도메인끼리는 서로 쿠키를 직접 읽거나 쓸 수 없다.

 

도메인이 다르면 일반적인 방법으로는 쿠키가 서로 인식되지 않는다.

하지만 특정 조건을 만족하거나 대체 방법을 사용하면 다른 도메인 간에도 사용자 상태나 인증 정보 등을 공유할 수 있다 ‼️

 

1️⃣ SameSite=None + Secure 설정을 통한 공유 (예: a.example.com, b.example.com)

쿠키에 SameSite=None; Secure 속성을 지정하면 서드파티 도메인에서도 쿠키가 포함된 요청을 보낼 수 있다.

단, 서로 다른 최상위 도메인 (예: abc.com ↔ xyz.com) 간 쿠키 공유는 불가능하다.

Set-Cookie: session=abc123; Domain=.example.com; SameSite=None; Secure

 

이렇게 하면 a.example.com, b.example.com 둘 다 이 쿠키를 사용할 수 있다.
단, HTTPS로 접속해야 하고, SameSite=None을 설정해야 한다.

SameSite=None: 다른 사이트에서 요청할 때도 쿠키를 포함하도록 허용

  • Secure: HTTPS 환경에서만 쿠키가 전송됨 (필수)
  • Domain: .example.com처럼 서브도메인끼리는 공유 가능 (예: a.example.com과 b.example.com)

2️⃣ 프론트엔드 간 중개 방식 (PostMessage + Storage 연동)

만약 두 웹사이트가 서로 다른 최상위 도메인(예: abc.com과 xyz.com)을 가진 경우, 브라우저의 보안 정책상 쿠키 공유는 불가능하다. 하지만 아래와 같은 방식으로 유사한 효과를 낼 수 있다. 아래의 방법은 주로 SSO (Single Sign-On) 또는 OAuth 기반 인증에서 사용된다.

  • 중앙 인증 도메인 (예: auth.domain.com)에 로그인
  • 각 서비스 도메인에서
    <iframe src="https://auth.domain.com"> 사용
  • 인증 정보를 공유할 때 window.postMessage()를 통해 전달
  • 받은 정보를 각 도메인의 localStorage나 sessionStorage 등에 저장

 

3️⃣ 백엔드 서버 간 토큰 연동 (Authorization Header 사용)

서로 다른 도메인 간 쿠키가 아닌 토큰 기반 인증(예: JWT)을 사용하여 정보를 연동하는 방식도 대안이다.

  • 프론트엔드는 로그인 후 받은 access token을 Authorization: Bearer <token> 헤더로 서버에 전송
  • 쿠키와 다르게 도메인 제약이 없음
  • API 호출 시 도메인 간 연동이 필요하면 CORS 설정 필수

4️⃣ 리버스 프록시 또는 동일 도메인 사용 설계
가장 안전하고 관리하기 쉬운 방식은 서비스들을 하나의 도메인으로 통합하거나 프록시로 우회시키는 것이다.

  • 예시: service1.domain.com, service2.domain.com으로 구성하고 .domain.com에 쿠키 설정
  • 혹은 domain.com/service1, domain.com/service2처럼 path 기반 구성

표로 정리

도메인 관계 쿠키 공유 가능 여부 방법
같은 최상위 도메인 가능 `SameSite=None; Secure; Domain=.domain.com`
서로 다른 도메인 직접 공유 불가 `postMessage`, OAuth, JWT 등 우회 방식 필요
SSO 필요 가능 OAuth2, Central Auth Server + `iframe`

 

 

이상 스텔라였습니다. ✍️

 

 

728x90

'TECH' 카테고리의 다른 글

면접 예상 질문 🙋‍♀️  (5) 2025.07.03
이벤트 트래킹과 헤비포인트 🎭  (7) 2025.07.02
비동기와 observing ⋲  (2) 2025.06.30
BEM 방법론 📚  (9) 2025.06.27
Reflow와 Repaint 🎨  (2) 2025.06.26