
❓Session
➡ 클라이언트(사용자)와 서버간의 연결(접속)을 상태 있게 유지하기 위한 수단
➡ 사용자가 웹사이트에 접속하면, 서버는 해당 사용자에게 고유한 세션 ID를 발급하고, 로그인 상태, 장바구니, 권한 정보 등을 서버에 저장하여 여러 요청 간에도 사용자를 식별하고 상태를 유지할 수 있도록 도와준다.
📦 세션의 구조와 동작 원리
- 사용자가 웹사이트에 처음 접속
- 서버가 세션 ID 생성 (랜덤 문자열)
- 클라이언트의 쿠키에 세션 ID 저장
- 이후 요청마다 브라우저가 이 세션 ID를 함께 전송
- 서버는 세션 ID를 기준으로 해당 사용자의 상태를 찾아서 유지
🔐 세션의 특징
항목 | 설명 |
저장 위치 | 보통 서버 메모리 or DB (Spring에서는 HttpSession ) |
보안 | 세션 ID가 유출되면 탈취 가능 → HTTPS 필요 |
수명 | 브라우저 종료 시 또는 일정 시간 후 만료 |
용도 | 로그인 유지, 장바구니, 사용자 맞춤 설정 등 |
❓Cookie
➡ 사용자가 방문한 웹사이트에서 사용자의 브라우저에 전송하는 작은 텍스트 조각
➡ 웹사이트는 쿠키를 통해 접속자의 장치를 인식하고, 접속자의 설정과 과거 이용내역에 대한 일부 데이터를 저장한다.
➡ 쿠키가 있으면 웹사이트에서 사용자의 방문에 관한 정보를 기억하여 다음 번에 사이트에 방문했을 때 번거로운 작업을 피하고 더 유용하게 사이트를 활용할 수 있다
❗쿠키는 외투를 맡기고 받는 표와 비슷하다.
→ “외투”를 코트 보관소에 맡긴다
- 웹사이트에 접속하거나 사이트를 방문하면 데이터 패킷이 웹사이트 서버에서 사용자에게 연결된다. 이 데이터는 사용자의 개인 계정이거나 쇼핑 카트이거나 심지어는 사용자가 방문했던 페이지일 수도 있다.
→ "외투" 소유자임을 확인하는 "표"를 받는다
- (데이터가 포함된) 쿠키가 사용자에게 제공되고 웹 브라우저에 저장된다. 쿠키에는 사용자만을 위한 고유 ID가 있다.
→ 다른 곳을 갔다가 돌아오면 "표"를 사용하여 "외투"를 받는다.
- 웹사이트를 다시 방문하면 브라우저가 웹사이트에 쿠키를 반환한다. 그러면 웹사이트가 고유 ID를 쿠키에서 읽고 사용자의 활동 데이터를 모아 사용자가 전에 방문했던 위치로 사용자를 다시 보내므로 사이트를 떠난 적이 없는 것처럼 느껴진다.

- 첫 Server 실행 때는 Cookie가 없음

- login-form을 요청하면 Cookie가 생긴다

- Network를 확인하면 Response Header의 Set-Cookie에서 생긴 Cookie를 확인할 수 있다

- Cookie 생긴 이후 아무 다른 페이지를 요청하면

- Response Header가 아닌 Request Header에 Cookie 값이 확인된다(이미 key를 줬으니까)

⚠ Test는 모든 인터넷 창을 다 끄고 한다
🧁 세션 vs 쿠키 차이
항목 | 세션 | 쿠키 |
저장 위치 | 서버 | 클라이언트(브라우저) |
보안성 | 상대적으로 안전 | 노출 위험 있음 |
용량 | 작음 (수KB, 오직 식별용) | 비교적 큼 (최대 4KB) |
유지 방식 | 서버가 상태 기억 | 클라이언트가 상태 보관 |
Share article