HTTP 통신은 무상태 프로토콜이라서 서버와 클라이언트가 한번 요청과 응답을 주고받으면 연결은 끊어진다.
서로간의 상태를 유지하지 않으며 이전의 요청은 기억하지 않는다.
단순 정보 조회라면 상관 없지만, 로그인 상태를 유지해야하는 상황이라면 어려움이 있다.
이때 쿠키가 사용된다.
출처 : https://raonctf.com/essential/study/web/cookie_connection
Set-Cookie : 서버에서 클라이언트로 쿠키를 전달한다. (응답)
Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달
Set-Cookie 에 로그인한 유저의 정보를 넣어 응답하면,
응답을 받은 브라우저는 브라우저 내부의 쿠키 저장소에 해당 유저 정보를 저장한다.
로그인 이후에 페이지에 접근하면 브라우저는 자동으로 쿠키 저장소를 조회하고 쿠키의 저장된 정보를 Cookie 에 할당하여 데이터를 요청한다.
( 쿠키 정보는 항상 서버에 같이 전송된다 )
서버는 이후 Cookie에 담긴 정보를 토대로 로그인 유무를 판단한다.
쿠키는 항상 서버에 전성되므로 네트워크 트래픽을 유발한다. 따라서 최소한의 자정보 (세션 id, 인증 토큰 )만 사용되며 보안상 민감한 정보는 저장하면 안된다.
expires : 날짜를 지정하며 만료일이 되면 해당 쿠키는 삭제된다.
max-age : 초 단위이며 0또는 음수 지정시 쿠키는 삭제된다.
세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료까지만 유지된다.
영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지된다.
domain : 명시한 문서를 기준으로한 도메인, 서브 도메인에만 쿠키를 전송한다.
이를 생략하면 기준 도메인에만 적용되며 서브 도메인은 X
path : 이 경로를 포함한 하위 경로 페이지만 쿠키가 접근한다.
path=/home 이라 하면 /home 하위 페이지는 접근 가능하지만 /hello 같은 다른 페이지는 불가하다.
Secure, HttpOnly, SameSite
Secure을 적용하면 https 인 경우만 전송한다.