IT 툴툴

[네트워크] HTTP 에서의 Cookie 가 없다면?

은듄 2025. 8. 14. 08:25
반응형

 

 

 

HTTP에서 Cookie의 역할은?
HTTP에서 Cookie가 없다면?

 

 

HTTP에서 쿠키(Cookie) 의 역할은
"Stateless"한 HTTP 프로토콜에 상태(State)를 부여해서,
클라이언트와 서버 간에 지속적인 정보(세션)를 공유할 수 있도록 해주는 것입니다.


1️⃣ 쿠키의 핵심 역할


역할 설명
사용자 식별 사용자가 누군지 식별 (로그인 상태 유지)
세션 유지 HTTP 요청이 독립적인 특성을 극복 → 상태 유지
개인화 언어, 테마, 최근 검색 기록 등 맞춤 설정 저장
트래킹 광고/분석 목적으로 방문 기록 추적 (3rd-party cookie)
 

2️⃣ 왜 HTTP에서 쿠키가 필요한가?

  • HTTP는 Stateless → 각 요청은 이전 요청과 관계없이 독립적으로 처리
  • 서버는 기본적으로 "이 요청이 이전에 로그인한 사용자인지" 알 수 없음
  • 쿠키는 클라이언트가 서버로부터 받은 작은 데이터 조각을
    이후 요청마다 자동으로 함께 전송하여 연결된 상태처럼 동작하게 함

3️⃣ 동작 방식 (흐름)

[1] 서버 → 클라이언트 (Set-Cookie)
HTTP/1.1 200 OK
Set-Cookie: session_id=abc123; Path=/; HttpOnly

[2] 클라이언트 브라우저가 쿠키 저장

[3] 이후 요청 시 자동 전송
GET /profile HTTP/1.1
Cookie: session_id=abc123

4️⃣ 쿠키와 세션의 관계


구분 쿠키 세션
저장 위치 브라우저(클라이언트) 서버(메모리, DB, Redis 등)
보안성 상대적으로 낮음 (탈취 가능) 높음 (민감 데이터는 서버에만 저장)
동작 방식 요청 시 자동 전송 쿠키를 통해 세션 ID 전달 후 서버에서 데이터 조회
 

📌 실무 예:
서버는 세션 ID만 쿠키에 저장하고, 실제 사용자 정보는 서버 세션 저장소에 보관 → 보안 강화


5️⃣ 쿠키의 주요 속성


속성 설명
Name=Value 저장할 데이터 (예: session_id=abc123)
Path 전송 경로 제한 (예: /app에서만 전송)
Domain 전송 도메인 제한
Expires / Max-Age 유효기간 설정
HttpOnly JS로 접근 불가 (보안 강화)
Secure HTTPS에서만 전송
SameSite CSRF 방지 옵션 (Strict, Lax, None)
 

✅ 정리

HTTP에서 쿠키의 역할은 서버와 클라이언트 간 상태 유지입니다.
즉, 원래 Stateless인 HTTP 프로토콜을 Stateful처럼 동작하게 만들어,
로그인 유지, 개인화, 트래킹 등 다양한 기능을 가능하게 합니다.

 

 

그러면 HTTP 통신에서 쿠키의 개념이 없다면??


 

HTTP에서 쿠키(Cookie)가 없다면,
HTTP의 본래 특성인 Stateless가 그대로 유지되어
요청 간 상태 유지가 불가능해집니다.


1️⃣ 쿠키가 없는 HTTP의 특징


항목 영향
로그인 유지 불가 매 요청마다 사용자가 누구인지 서버가 알 수 없음
개인화 불가 언어 설정, 테마, 장바구니, 최근 검색 기록 저장 불가
상태 기반 서비스 불가 장시간 대화형 서비스, 결제 과정, 다단계 폼 처리 불가
연속적인 사용자 경험 저하 페이지 이동 시 매번 초기 상태로 리셋됨
 

2️⃣ 예시 (로그인 시나리오)

📌 쿠키 없는 경우

 
1. 로그인 요청 → 서버 인증 OK
2. 다음 페이지 요청 → 서버가 사용자 식별 불가 → 다시 로그인 요구

📌 쿠키 있는 경우

1. 로그인 요청 → 서버 인증 OK + session_id 쿠키 발급
2. 다음 페이지 요청 → 쿠키(session_id) 포함 → 서버가 로그인 상태 유지

3️⃣ 쿠키 없는 환경에서의 대안


대안 설명 단점
URL 파라미터 ?session_id=abc123로 상태 전달 URL 노출, 보안 취약
HTML Form Hidden Field 숨겨진 input 값으로 상태 전달 요청 방식 제한, 불편
로컬 저장소(LocalStorage) 브라우저에 직접 저장 자동 전송 안 됨, JS 필요
HTTP 헤더 토큰 Authorization: Bearer {토큰} 자동 전송 안 되고, 구현 필요
 

📌 결론: 쿠키는 브라우저가 자동으로 상태를 요청과 함께 전송해주기 때문에 편리하고 표준화된 방법임.


4️⃣ 서비스 영향 요약


서비스 유형 쿠키 없을 때 영향
쇼핑몰 장바구니 유지 불가
SNS 로그인 후 페이지 이동 시 로그아웃됨
포털 개인화 뉴스/광고 제공 불가
결제 페이지 여러 단계 결제 진행 불가
 

정리

  • 쿠키가 없으면 HTTP는 완전히 Stateless하게 동작
  • 사용자의 연속적인 활동(로그인, 장바구니, 설정 유지 등) 불가능
  • 가능은 하지만, 다른 방법을 쓰면 구현 복잡도와 보안 위험이 커짐

 

 

HTTP는 TCP 인데 Sessionless (stateless) 인지에 대해서 궁금하다면 아래 글을 참조해보세요!

https://eundunn.tistory.com/157

 

 

오늘도 뚠뚠IT!

반응형