웹사이트는 사용자의 행동과 기본설정에 따라 콘텐츠와 레이아웃을 개인화할 수 있다. 예를 들어 웹사이트는 사용자가 선호하는 언어, 테마 또는 레이아웃을 기억할 수 있으므로 방문할 때마다 설정하지 않아도 된다. 하지만 클라이언트에서 보내는 요청에는 한 가지 큰 단점이 있다. 하나의 컴퓨터를 여러 사람이 같이 쓸 수 있기 때문에 누가 보내는지 모른다는 것이다. 그래서 로그인해서 지속적으로 서버에 내가 누구인지를 계속 알려주어야한다.
쿠키는 클라이언트 로컬에 저장되는 Key-Value
로 이루어진 작은 데이터이다.
서버는 내가 누구인지 기억하기 위해서 유효 기간이 있는 쿠키를 클라이언트에 보내준다.
첫 요청에서 클라이언트에 쿠키가 없으면 서버는 쿠키를 동봉해서 클라이언트에 응답한다.
클라이언트가 쿠키를 헤더에 담아 요청했을 때, 서버는 쿠키를 읽어서 사용자가 누구인진 판단한다.
세션이란 사용자가 웹 사이트와 상호작용하는 동안 지속되는 정보를 저장하는 서버측 저장소이다. 세션은 동일한 클라이언트의 요청 간에 상태를 유지하는 데 사용된다.
예를 들어, 이메일이나 소셜 미디어 사이트와 같은 서비스에 로그인하면 사이트 내의 다른 페이지로 이동할 때마다 사용자 이름과 암호를 다시 입력할 필요가 없다. 이는 로그인 하자마자 서버에서 세션을 생성한다. 클라이언트는 세션에서 응답한 쿠키와 함께 서버에 요청하면 세션에서 쿠키에 담긴 정보를 해석하여 로그인이 유지될 수 있다.
저장위치
쿠키는 로컬에 저장되고, 세션은 서버에 저장된다.
보안
쿠키는 탈취와 변조가 쉽지만, 세션은 서버에 Id가 저장되므로 상대적으로 안전하다.
Lifecycle
쿠키는 클라이언트에 저장되어 남아있지만, 세션은 브라우저를 종료하면 사라진다.
속도
쿠키는 파일에서 읽기 때문에 상대적으로 빠르지만, 세션은 요청마다 서버에서 처리를 해야하기 때문에 비교적 느리다.
소중한 정보 감사드립니다!