
http는 stateless
웹사이트는 유저와 항상 연결되어 있지 않다.
보통 유저가 웹사이트에 방문하여 서버로 요청을 보내면 잠시 웹사이트와 유저가 연결된다. 이때 서버는 요청받은 것을 응답으로 전해주고 연결이 종료된다.
하지만, 유저의 정보가 저장되어야 하는 경우가 있다.
저장을 위해 존재하는 것이 cookie
- 서버는 인증정보를 담은 쿠키를 클라이언트에게 전달
- 클라이언트는 전달받은 쿠키를 요청과 같이 서버에 전달
- 클라이언트와 서버는 연결된다.
HTTP Reponse Header 에 Set-Cookie 속성을 이용하여 클라이언트에 쿠키를 제공한다. domain scoped링크버튼 등을 통해 어떠한 웹에서든 네이버로 요청을 보내면,sent automaticallyset automaricallyres.cookie('refreshToken',refreshToken,{
secure: true,
httpOnly: true,
sameSite: 'None'
})
Lax :Cross-Origin 요청이면 'GET' 메소드에 대해서만 쿠키를 전송할 수 있습니다.
Strict : Cross-Origin이 아닌 same-site 인 경우에만 쿠키를 전송 할 수 있습니다.
None: 항상 쿠키를 보내줄 수 있습니다. 다만 쿠키 옵션 중 Secure 옵션이 필요합니다.
이때 'same-site'는 요청을 보낸 Origin과 서버의 도메인이 같은 경우를 말합니다.
로그인, 장바구니, 게임 스코어 등의 정보 관리테마 등의 세팅
이미지 출처: Thoroughly understand session, cookie, token
1.클라이언트가 서버에 요청한다.
2.서버에서 쿠키를 생성하고, 쿠키를 HTTP Header에 실어 보낸다
3. 서버에서 쿠키를 확인하고,요청 + 쿠키를 보낸다.
4. 서버에서 쿠키를 확인하고(인증을 확인) ct에 응답을 보낸다.
5. 브라우저가 종료되어도 쿠키가 만료전이라면 ct는 쿠키를 보관한다.