현상
- 다른 도메인의 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 쿠키를 아예 못 받음 → 로컬에서 로그인 안 되는 흔한 원인