현상

  • 다른 도메인의 API를 호출하면 쿠키가 안 실려서 서버가 "누군지 모르는 사람"으로 처리
  • 에러가 안 나고 그냥 비로그인 취급 → 원인 찾기 어려운 게 함정
같은 도메인  www.a.com → www.a.com/api    쿠키 ✅
다른 도메인  localhost:3000 → api.a.com   쿠키 ❌ (기본값)

  • 쿠키는 발급된 도메인에 묶임. 브라우저는 그 도메인으로 가는 요청에만 자동으로 붙임
  • 광고 추적 방지 흐름 속에서, 다른 출처로 가는 요청엔 쿠키를 기본적으로 안 붙이게 됨

붙이려면 3박자가 다 맞아야 함

누가무엇을
프론트요청에 credentials: 'include' (axios는 withCredentials: true)
서버Access-Control-Allow-Credentials: true + Access-Control-Allow-Origin에 정확한 출처(* 불가)
쿠키SameSite=None; Secure → HTTPS 필수
  • 하나라도 빠지면 조용히 안 붙음

SameSite=None의 오해

  • SameSite=None이 여는 건 "다른 사이트에서 시작된 요청이라도, 그 쿠키 주인 도메인으로 갈 때 실어준다"는 것
  • 쿠키가 다른 도메인으로 가는 게 아님. 쿠키는 끝까지 자기 도메인에만 감
쿠키 주인: a.com
b.com → a.com 요청   쿠키 ✅ (SameSite=None이면)
b.com → b.com 요청   a.com 쿠키 ❌

정리

  • 크로스도메인 인증이 안 풀리면 원인은 대개 서버 CORS 헤더쿠키 SameSite/Secure 속성
  • localhost(HTTP)는 SameSite=None; Secure 쿠키를 아예 못 받음 → 로컬에서 로그인 안 되는 흔한 원인