배포 환경에서 로그인 시 다음 로그를 확인:
API 요청: 요청 URL과 메서드API 응답 상태: HTTP 상태 코드응답 헤더: Set-Cookie 헤더 확인
- 개발자 도구 열기 (F12)
- Network 탭으로 이동
/auth/callback요청 찾기- Response Headers에서 다음 확인:
Set-Cookie: sid=<session-id>; SameSite=None; Secure; HttpOnly; Path=/; Domain=api.yourdomain.com
백엔드 API에서 /auth/callback 엔드포인트의 응답이 다음을 포함해야 합니다:
// Node.js/Express 예시
res.cookie("sid", sessionId, {
httpOnly: true, // JavaScript에서 접근 불가 (보안)
secure: true, // HTTPS에서만 전송
sameSite: "none", // Cross-Origin 요청 허용
maxAge: 86400000, // 24시간 (ms)
domain: ".yourdomain.com", // 모든 서브도메인에서 접근 가능
path: "/",
});백엔드 API의 CORS 설정에서 다음을 확인:
// CORS 설정 예시
app.use(
cors({
origin: "https://your-frontend-domain.com",
credentials: true, // 쿠키 전송 허용
methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
allowedHeaders: ["Content-Type", "Authorization"],
})
);.env 또는 배포 플랫폼의 환경 변수에 다음이 설정되어 있는지 확인:
NEXT_PUBLIC_API_BASE_URL=https://api.yourdomain.comCross-Origin 환경에서는 반드시 SameSite=None이 필요합니다.
HTTPS 환경에서는 Secure=true가 필요합니다.
예: Domain=yourdomain.com → .yourdomain.com (점 포함)
백엔드에서 Access-Control-Allow-Credentials: true를 보내지 않음
- ✅ 프론트엔드에서
credentials: "include"설정 확인 (lib/api.ts:72) - ✅ 백엔드 응답에
Set-Cookie헤더 확인 (Network 탭) - ✅
Set-Cookie헤더에SameSite=None; Secure포함 확인 - ✅ 브라우저 콘솔에서 쿠키 로그 확인
- ✅ CORS 응답 헤더에
Access-Control-Allow-Credentials: true확인
만약 Cross-Origin 쿠키 설정이 불가능하다면:
- JWT 토큰을 localStorage에 저장
- Authorization 헤더로 전송
- (이 방법은 XSS 취약점이 있으므로 보안을 신경써야 함)