src/shared/lib/supabase/server.ts의 crossDomainCookieOptions(): 프로덕션 sameSite none + secure, COOKIE_DOMAIN 옵션.
Framer <-> Next API 크로스 도메인 구조.
브라우저는 요청을 보낼 때 "지금 보고 있는 페이지의 사이트"와 "요청이 가는 사이트"가 같은지 비교한다.
SameSite는 이름 그대로 Origin이 아닌 Site 기준.
Framer 페이지는 domain.co.kr 에서 열려있고, 코드 컴포넌트가
Vercel 에 있는 Next API로 fetch를 보낸다.
API가 xxx.vercel.app 같은 도메인이라면 브라우저 입장에서 이건 크로스 사이트 요청이다.
요즘 브라우저는 SameSite를 지정하지 않은 쿠키를 Lax로 취급하는데, Lax는 크로스 사이트 Fetch에 쿠키를 싣지 않는다.
그래서 쿠키를 크로스 사이트 요청에도 보내려면 SameSite=None를 명시해야하고, Nonoe은 Secure 없이는 브라우저가 아예 거부한다. 둘다 있어야 하는 이유는 여기서 나온다.
fetch(url, { credentials: 'include' })Access-Control-Allow-Origin: https://domain.co.kr + Access-Control-Allow-Credentials: true