오늘은 HTTP의 특징 중 하나인 무상태 프로토콜의 한계를 해결하기 위한 방법인 쿠키와 세션에 대해서 알아보겠습니다
HTTP의 특징을 아직 모르신다면 아래의 글을 참고해주세요⬇️
[CS] HTTP란?
HTTP(HyperText Transfer Protocol)💡웹 브라우저와 웹 서버 간에 데이터를 주고 받기 위해 사용하는 프로토콜 HTTP의 특징크게 클라이언트 서버 구조,Connectionless와 Stateless로 볼 수 있습니다클라이언트
dinmoy8761.tistory.com
쿠키와 세션 많이 들어보기는 했을텐데 어디에 어떤 상황에서 쓰이는 것 일까요?
쿠키(Cookie)란
💡브라우저에 로컬로 저장되는 Key-Value쌍의 작은 데이터 파일
어떤 웹 사이트에 방문했을 때 브라우저를 통해 사용자의 컴퓨터에 보관하는 기록물입니다
쿠키 구성요소
쿠키 이름, 쿠키값,만료시간 전송할 도메인명 전송할 경로 보안연결 여부 httpOnly여부
동작 방식
- 클라이언트가 서버에 로그인 요청
- 서버는 클라이언트 로그인 요청의 유효성을 확인(아이디와 비밀번호검사) 하고 응답헤더에 쿠키를 추가하여 응답
- 클라이언트는 이후 서버 요청 할 때 받은 쿠키를 자동으로 요청헤더에 추가하여 요청
- 쿠키는 사용자가 웹 사이트에 접속할 떄마다 서버에 전송되어서 서버의 기억을 되살리는 역할을 합니다
- 쿠키의 기한은 정해져있지 않고 명시적으로 지우지 않으면 반 영구적으로 남아있습니다
쿠키에도 규칙이 있는데요
쿠키 규칙
- 쿠키는 도메인 1개에만 한정한다
예를 들자면 인스타그램에서 생성된 쿠키는 넷플릭스에 보낼 수 없습니다
- 쿠키는 자동으로 보낸다
쿠키는 사용자가 원하든 원하지 않든 사용자의 컴퓨터와 서버를 왔다갔다 할 수 있습니다
- 쿠키는 컴퓨터에 자동으로 저장된다
쿠키는 사용자가 어떤 웹사이트에 접속하면 그 순간 쏟아져 들어와서 볼 수 있습니다
세션(session)
💡서버측에서 관리되는 브라우저가 종료되기 전까지 클라이언트의 요청을 유지해주는 기술
즉 방문자가 휍서버에 접속해 있는 상태를 하나의 단위로 보고 세션으로 처리합니다
동작 방식
- 클라이언트가 서버에 로그인 요청
- 서버는 클라이언트의 로그인 요청 유효성을 확인하고 unique한 id를 seesionid라는 이름으로 저장
- 서버가 응답할 떄 응답헤더에 쿠키를 추가하여 응답
- 클라이언트는 이후 서버에 요청할 때 전달받은 쿠키를 자동으로 요청헤더에 추가하여 요청
- 서버에서는 요청헤더의 seesionid값을 저장된 세션 저장소에서 찾아보고 유효한지 확인 후 요청을 처리하고 응답
- 세션의 내용은 서버에 저장되어 게속 늘어나면 서버에 부하가 발생가 발생할 수 있습니다
이렇게 쿠키와 세션에 대해 알아보았지만 아직도 헷갈리다면
한 눈에 이해하기 쉽게 표로 정리해봅시다
총 정리 하자면
구분 |
쿠키 |
세션 |
저장위치 |
로컬 |
서버 |
보안 |
약함 |
쿠키에 비해 상대적으로 안전 |
lifecycle |
브라우저 종료시에도 파일로 남음 |
브라우저 종료시 세션 삭제 |
속도 |
빠름 (파일에서 읽기때문) |
비교적 느린편 (요청마다 서버에서 처리를 해야하기 떄 |
- 지워지거나 조작되거나 가로채이더라도 큰일은 없을 정보들은 쿠키로 브라우저에
사용자나 다른 누군가에게 노출되어서는 안되는서비스 제공자가 직접 관리해야하는 정보들 세션으로 서버 안에서 저장됩니다