학습 목표
- HTTP 의 무상태성을 한 문장으로 설명할 수 있다
- 쿠키와 세션이 등장한 이유를 안다
- 두 도구가 어디에 정보를 저장하는지 안다
1. 무상태성 (Stateless)
HTTP 는 한 요청을 처리하면 손님과의 연결을 끊고 그 손님을 잊습니다. 다음 요청이 오면 같은 사람인지 알 길이 없습니다.
비유: 매번 잊어버리는 점원. "방금 주문하신 분이 또 오셨네 — 누구셨더라?"
2. 두 가지 해결책
| 도구 | 저장 위치 | 설명 |
쿠키 (Cookie) | 브라우저 | 가게가 발급한 「작은 메모」를 손님이 들고 다닌다. 다음 요청 때 자동으로 함께 보내진다. |
세션 (Session) | 서버 메모리 | 가게가 정보를 직접 보관하고, 손님에게는 보관함 「열쇠(세션 ID)」만 발급한다. |
3. 흐름
쿠키
① 서버 → 브라우저 : Set-Cookie: id=abc123
② 다음 요청 : Cookie: id=abc123 (자동 동봉)
세션
① 로그인 성공 : 서버 보관함에 정보 넣기
Set-Cookie: JSESSIONID=xyz789
② 다음 요청 : Cookie: JSESSIONID=xyz789
서버가 보관함에서 정보 꺼냄
참고: 세션도 사실 쿠키를 씁니다 — 손목 도장(JSESSIONID)이 쿠키 형태로 발급됩니다. 다만 진짜 정보(이름·권한 등)는 서버에 안전히, 손님은 짧은 ID 만 들고 다닙니다.
4. 쿠키 vs 세션
| 항목 | 쿠키 | 세션 |
| 저장 위치 | 브라우저 | 서버 |
| 보안 | 약함 | 강함 |
| 용량 | ~4KB | 큼 |
| 대표 용도 | 장바구니·다크모드 | 로그인 상태 |
5. F12 로 확인
F12 → Application → Cookies
- 현재 사이트의 쿠키 목록 확인 (JSESSIONID 등)
- Network 탭에서 Cookie 헤더가 매 요청에 자동으로 실리는 것 확인
실제 코드는 Part 5에서: 오늘은 「왜 필요한가」와 「어디에 저장되는가」 의 큰 그림만 잡습니다. HttpSession 사용·BCrypt·세션 로그인은 Part 5(회원과 게시판) 에서 본격 다룹니다.
6. Before / After
전 차시 끝
HTTP 메시지 모양은 알지만, 페이지 이동 시 「누군지 모르는 문제」는 인식 못함.
이번 차시 끝
HTTP 무상태성을 알고, 쿠키·세션이 그 한계를 우회하는 도구임을 안다.
학습 확인 체크리스트
- HTTP 의 무상태성을 한 문장으로 설명할 수 있다
- 쿠키 = 브라우저 저장 / 세션 = 서버 저장 을 입으로 말할 수 있다
- F12 Application 탭에서 쿠키 목록을 찾을 수 있다
- JSESSIONID 가 무엇의 「열쇠」 역할을 하는지 안다