HTTP 개념
1. HTTP 는 비연결 구조로 사용자의 연결을 계속 유지 하지 않는 방식
2. 사용자의 요청에 대한 응답을 한 후 연결을 해제
아래글은 쿠키와 세션을 이해하기 쉽게 그림으로 설명 해 놓은 글입니다.
로그인 정보나 장바구니 정보 같은 클라이언트 기반 정보들은 어떻게 저장할까?
다음 그림을 보자.
HTTP는 연결 보장을 하지 않으므로 또 다시 요청이 들어 온다면 서버는 해당 브라우저의 세션정보를 찾아줘야 할 것이다.
그런데 서버입장에서 생각해보면 서버에 요청해놓은 브라우저들이 엄청 많기에 세션정보를 어떻게 줄까?
그래서 자신의 세션 정보를 찾기 위해 자신의 세션을 증명하는 ID 가 필요하다.
보통의 사이트에서는 ID를 쿠키로 가지고 있게 된다.
쿠키란 브라우저 상에서 저장되는 객체이다.
더쉽게 말하면 쿠키는 사용자 컴퓨터의 하드디스크에 저장되는 작은 텍스트 파일이며 세션은 서버의 메모리상에 존재하는 객체이다.
사용자 컴퓨터에서 세션정보처럼 많은 정보를 저장하기 힘든 관계로 많은 정보는 세션에 저장하고 그 세션 아이디만 web browser(사용자pc) 에 쿠키 형태로 저장을 해두는 것이다.
이런식으로 하면 세션아이디로 로그인 정보를 꺼내 줄 수 있다.
그럼 한번 이 세션아이디로 정말 로그인이 가능한지 테스트 해볼까?
일단 쿠키를 수정하기 위해 크롬 ad-on "Edit This Cookie" 를 설치한다.
원하는 사이트에 로그인 한 후 Edit This Cookie 를 실행해 보면
앵간하면 SESSION ID 라고 써있는 쿠키를 발견할 수 있을 것이다.
SESSION ID 라고 써있는 쿠키를 발견했다면 그 값을 잠시 메모장에 저장해 둔다.
그러고선 SESSION ID 를 지워보자
브라우저를 리플래쉬하면??
당연히 세션ID를 잃어버렸으니까 서버에서 자기 세션을 찾지 못하므로 서버는 이놈이 로그인 안된줄 알고 로그인 하라는 메시지를 보낼 것이다.
그렇다면 다시 아까 메모장에 저장해둔 세션 아이디를 입력하고 리프래쉬 해보자!
어떻게 되는가?
멀쩡하게 로그인 한것과 같은 화면이 되버린다.
아직 서버 안에 세션객체가 죽지 않았기 때문에
알맞는 세션 아이디만 있으면 다시 그 세션(로그인 정보와 장바구니 정보)를 물려줄 것 이다.
이쯤되면 아~ 로그아웃을 꼭 누르고 나와야 겠구나 할것이다.
왠만한 사이트의 로그아웃 기능은 쿠키의 세션아이디를 지워버리는 역할을 한다.
만약 피씨방 같은곳에서 로그아웃을 하지 않고 브라우저 창만 닫고 나온다면?
피씨에 저장된 쿠키의 세션 아이디값을 읽어다가
브라우저에 쿠키를 설정하고 해당 사이트에 들어가면 그대로 로그인이 되버리므로 조심 조심
공공장소에서는 항상 로그아웃버튼을 누르고 나오시길!
출저:
'2019년 이전 정리 > Server' 카테고리의 다른 글
Tomcat 에러 java.lang.UnsupportedClassVersionError (0) | 2013.12.16 |
---|---|
클러스터링 환경 (0) | 2013.12.14 |
세션(session) 시간 설정 (0) | 2013.12.02 |
Android Server JSON 송수신 방법 [기초] (0) | 2012.12.06 |
Tomcat server 설치 (Eclipse 포함) (0) | 2012.11.30 |