HTTP 는 한 번 응답을 돌려준 뒤 손님과의 연결을 끊습니다. 다음 요청이 오면 — 같은 사람인지 알 길이 없습니다.
🛠️ 무상태성 (Stateless)
HTTP 의 본래 성질
매번 잊어버리는 점원과 같습니다. 한 손님이 방금 주문해도, 다음 주문 때는 처음 본 사람처럼 응대합니다.
① 손님 : "아메리카노 주세요"
가게 : "여기요" (응대 끝, 손님 잊음)
② 같은 손님 : "이번엔 라떼 주세요"
가게 : "처음 뵙겠습니다" ← 또 처음부터
이게 본래 모습. 그러면 로그인은 어떻게 유지될까요?
🛠️ 해결책 ① 쿠키 (Cookie)
🍪 손님(브라우저) 쪽 저장
브라우저에 저장하는 작은 메모. "이 손님은 ID 가 abc123 입니다" 같은 정보를 손님이 들고 다닙니다.
🛠️ 해결책 ② 세션 (Session)
🔑 가게(서버) 쪽 저장
서버에 정보 보관함을 두고, 손님에게는 「손목 도장」만 찍어 줍니다. 민감한 정보는 가게 안 금고에 남습니다.
저장 위치가 다릅니다. 이게 쿠키·세션의 본질적 차이.
쿠키의 흐름
① 처음 방문
손님 → 가게 : "안녕"
가게 → 손님 : "안녕. 이 메모 들고 다니세요" (Set-Cookie: id=abc123)
② 다음 요청
손님 → 가게 : "왔어요. 이 메모 가지고 있어요" (Cookie: id=abc123)
가게 → 손님 : "아, 그 손님이군요! 어서 오세요"
쿠키는 브라우저에 저장됩니다. F12 → Application → Cookies 에서 직접 볼 수 있어요.
세션의 흐름
① 로그인 성공
가게 : 금고에 정보 넣음 (이름, 권한, ...)
가게 → 손님 : "이 손목 도장만 들고 다니세요" (JSESSIONID=xyz789)
② 다음 요청
손님 → 가게 : "도장 보여드려요" (JSESSIONID=xyz789)
가게 : 금고에서 xyz789 의 정보를 꺼냄 → "환영합니다 OO님"
민감한 정보는 가게(서버)에만 있고, 손님은 도장(세션 ID)만 들고 다닙니다.
쿠키 vs 세션 — 한 줄 비교
항목
쿠키
세션
저장 위치
브라우저
서버
보안
약함 (사용자가 볼 수 있음)
강함 (서버 안에)
용량
작음 (~4KB)
큼 (서버 메모리)
대표 용도
장바구니, 다크모드 설정
로그인 상태
※ 사실은 세션도 쿠키를 씁니다 — 손목 도장(JSESSIONID) 자체가 쿠키에 담겨 다니거든요.
오늘은 여기까지
중요
실제 코드로 쿠키·세션을 다루는 건 Part 5(회원과 게시판) 에서 합니다. 오늘은 「왜 이런 도구가 필요한가」 의 그림만 머릿속에 그려두면 충분합니다.
🔄 Before / After
전 차시 끝
HTTP 메시지의 글자 모양은 알지만, 페이지를 옮길 때마다 처음 보는 사람이 되는 문제는 모름.
→
이번 차시 끝
HTTP 가 무상태성이라는 걸 알고, 쿠키·세션이 「그래서 만들어진 도구」라는 걸 안다.
📊 한 그림 정리
이번 차시의 데이터 흐름
브라우저
⇄
서버
↔
쿠키 / 세션
● 「상태 유지 도구」가 새로 등장 — 어디에 저장되느냐가 핵심
정리
오늘 들고 가는 것
HTTP 는 본래 무상태성 — 서버는 매번 잊어버린다
쿠키 = 브라우저 쪽 저장 / 세션 = 서버 쪽 저장
실제 코드는 Part 5 에서. 오늘은 그림만
다음 차시: 정적 vs 동적 / WAS — 같은 HTML 인데 어떨 때 매번 다르게 보일까.