쿠키와 세션은 http 프로토콜의 특징이자 약점을 보완하기 위해서 사용한다.
http 프로토콜은 connectionless, stateless의 특징을 가지고 있다.
connectionless: 클라이언트가 서버에 요청 했을 때 그 요청에 맞는 응답을 보낸 후 연결을 끊는 방식
stateless: 커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보를 유지하지 않는다.
실제로는 데이터 유지가 필요한 경우가 많은데
로그인을 했는데 페이지를 다시 불러올 때마다 로그인을 다시 한다거나
로그인 시 아이디 저장을 체크했는데도 불구하고 아이디가 저장이 되어있지 않다거나 하는 것이 대표적인 예이다.
그래서 쿠키와 세션을 사용한다.
쿠키는 클라이언트에 저장하는 정보 파일이다. 클라이언트에 저장하였다가 필요 시 사용할 수 있다.
이름, 값, 만료 일, 경로 정보로 구성되어 있다.
세션은 웹 서버에 접속해 있는 상태를 하나의 상태로 유지하기 위한 단위라고 할 수 있다.
서버에 정보를 저장하며 쿠키를 통해 클라이언트에 전달한다.
일반적으로 쿠키가 세션보다 속도가 빠르고
세션이 쿠키보다 보안이 더 좋다.
쿠키는 만료 시점이 지날 때까지 유효하며
세션은 브라우저 종료 시 삭제되고 기간 설정도 가능하다.