쿠키와 세션이 필요한 이유
HTTP 프로토콜의 특징이자 약점을 보완하기 위해 사용
1. Connectless 프로토콜 (비 연결지향)
클라이언트가 서버에 요청을 했을 때, 그 요청에 맞는 응답을 보낸 후 연결을 끊는 처리방식
2. Stateless 프로토콜
통신이 끝나면 상태를 유지하지 않는 특징
쿠키와 세션은 이 두가지 특징을 해결하기 위해 사용한다.
쿠키 (Cookie)
쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터파일이다.
특징
사용자 인증이 유효한 시간을 명시할 수 있으며, 유효시간이 정해지면 브라우저가 종료되어도 인증이 유지된다.
클라이언트에 300개까지 저장가능하고 하나의 도메인당 20개의 값만 가질 수 있으며, 하나의 쿠키값은 4KB까지 저장한다.
쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시 Request Header를넣어서 자동으로 서버에 전송한다.
동작방식
1. 클라이언트가 페이지를 요청
2. 서버에 쿠키를 생성
3. HTTP 헤더에 쿠키를 포함시켜 응답
4. 넘겨 받은 쿠키는 클라이언트가 가지고 있다가(로컬 PC에 저장) 다시 서버에 요청할 때 요청과 함께 쿠키를 전송한다.
5. 동일 사이트 재방문시 클라이언트의 PC에 해당 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송한다.
사용 예
방문 사이트에서 로그인 시, "아이디와 비밀번호를 저장하시겠습니까?"
쇼핑몰의 장바구니
자동 로그인, 팝업에서 "오늘 더이상 이 창을 보지 않음" 체크
최근 검색한 상품들 광고에서 추천
세션 (Session)
웹 브라우저 당 1개씩 생성되며 웹 컨테이너에 저장되고 브라우저 종료시 소멸된다.
웹 서버에 저장되는 쿠키이다.
저장 데이터에 제한이 없다.
캌 클라이언트 고유 Session ID를 부여한다. Session ID로 클라이언트를 구분할 수 있다.
동작 방식
1. 클라이언트가 페이지를 요청한다. (사용자가 웹사이트 접근)
2, 서버는 접근한 클라이언트의 Cookie를 확인하여, 클라이언트가 session id를 보냈는지 확인한다.
3. session id가 존재하지 않는다면 서버는 session id를 생성하여 클라이언트에게 돌려준다.
4. 서버에서 클라이언트로 돌려준 sessionid를 쿠키를 사용해 서버에 저장한다.
쿠키이름 : JESSIONID
5. 클라이언트는 재접속시, 이 쿠키를 이용하여 sessionid값을 서버에 전달한다.
사용 예
화면이 이동해도 로그인이 풀리지 않고 로그아웃 전까지 유지
쿠키(Cookie) | 세션(Session) | |
저장 위치 | 클라이언트(=접속자 PC) | 웹 서버 |
저장 형식 | text | Object |
만료시점 | 쿠키 저장시 설정 | 브라우저 종료시 삭제 |
사용하는 자원 | 클라이언트 | 웹 서버 |
용량 제한 | 총 300개 하나의 도메인 당 20개 하나의 쿠키 당 4KB |
서버가 허용하는 한 용량제한 없음 |
속도 | 세션보다 빠름 | 쿠키보다 느림 |
보안 | 세션보다 안좋음 | 쿠키보다 좋음 |
Reference
[WEB] 쿠키, 세션이란?
웹의 기초중 하나인 쿠키와 세션에 대해 알아봅니다.
chrisjune-13837.medium.com
'개발 > 기타' 카테고리의 다른 글
UX/UI의 10가지 심리학 법칙을 읽고 (0) | 2022.08.17 |
---|---|
REST API 개념, 특징, 및 설계 규칙 (1) | 2022.02.21 |
Docker 간단한 개념정리 및 간단한 실습 (컨테이너, 이미지 생성 및 포트포워딩, 파일시스템과 도커 연결 등 경험해보기) (0) | 2022.01.04 |