HTTP 상태 관리
작성일 : 2025.02.16
HTTP 프로토콜의 특성과 한계
HTTP 프로토콜은 두 가지 중요한 특성을 가지고 있습니다:
1. 비연결지향성(Connectionless)
- 클라이언트가 요청을 보내면 서버는 응답 후 즉시 연결을 종료합니다.
- HTTP/1.1에서는
keep-alive를 통해 커넥션 재활용이 가능해졌습니다.
2. 무상태(Stateless)
- 연결이 끊어지면 클라이언트와 서버 간의 상태 정보가 유지되지 않습니다.
- 이러한 특성으로 인해 서 버는 클라이언트를 구별할 수 없다는 한계가 있습니다.
상태 관리 솔루션
1. 쿠키 (Cookie)
주요 특징
- 클라이언트 브라우저에 저장되는 작은 데이터 파일
- 저장 제한:
- 클라이언트당 300개
- 도메인당 20개
- 쿠키당 4KB
- 자동 전송: HTTP 요청 시 헤더에 자동으로 포함되어 서버로 전송
- 만료기간 설정 가능
주요 사용 사례
- 로그인 세션 관리
- 사용자 선호도 저장
- 사용자 행동 추적
2. 세션 스토리지 (Session Storage)
주요 특징:
- 용량: 약 5~10MB (브라우저별 상이)
- 만료기간: 브라우저 탭/창을 닫으면 즉시 삭제
- 서버 통신: 자동 전송되지 않음
- 접근 범위: 동일한 탭에서만 접근 가능
주요 사용 사례
- 일회성 폼 데이터
- 임시 작업 내역
- 페이지 간 데이터 전달
3. local 스토리지 (Local Storage)
HTML5에서 도입된 클라이언트 저장소입니다.
주요 특징:
- Key-Value 형태의 저장소
- 문자형 데이터만 저장
- 용량: 보통 5~10MB (브라우저별 상이)
- 만료기간: 영구 저장 (사용자가 직접 삭제하기 전까지 유지)
- 서버통신: 자동 전송되지 않아 CSRF에 안전
- 접근 범위: 동일 도메인 내 모든 페이지에서 접근 가능
주요 사용 사례
- 사용자 설정
- 장바구니 정보
- 캐시된 데이터
- 자동 로그인 등에 활용
비교 분석
보안성
세션 > 웹 스토리지 > 쿠키
성능
쿠키 > 웹 스토리지 > 세션
저장 용량
웹 스토리지 > 세션 > 쿠키
영속성
로컬 스토리지 > 쿠키 > 세션 = 세션 스토리지
선택 가이드
- 서버와의 통신이 필요한 데이터: Cookie
- 영구적으로 보관할 데이터: localStorage
- 임시로 필요한 데이터: sessionStorage