HTTP 프로토콜의 특징부터 살펴보도록하자.
-
비연결 지향
-클라이언트가 요청을 서버에 보내고, 서버는 클라이언트에 응답하면 바로 연결을 끊는다.
-
상태정보 유지 X
-연결이 끝나는 순간 서버와 클라이언트의 통신은 끝나며 상태 정보를 유지하지 않는다.
연결이 유지되지 않기때문에 통신할때마다 새로 연결하기 때문에 매번 인증을 해야하는 문제점이 발생
이전 요청과 현재 요청이 같은 사용자의 요청인지 알기위해서는 상태를 유지해야함. → 쿠키와 세션 사용
쿠키는 왜 필요할까?
기본적으로 서버는 클라이언트 정보를 유지하지 않는다(stateless). 그렇다면 사용자를 추적하는 방법에는 무엇이 있을까? → 쿠키 사용하기
쿠키와 세션의 차이점
- 저장위치
- 쿠키는 클라이언트에 저장된다
- 세션은 서버에 저장된다
- 보안
- 쿠키는 클라이언트에 저장되기에 보안에 취약하다
- 세션은 쿠키를 이용해 Session ID만 저장하고 그 값으로 구분하기에 상대적으로 보안이 좋다
- 라이프사이클
- 쿠키는 만료시간에 따라 브라우저를 종료해도 남아있을 수 있다.
- 세션은 만료시간과 상관없이 브라우저가 종료되면 삭제된다.
- 속도
- 클라이언트에 저장된 쿠키가 더 빠르다
- 세션은 실제 저장된 정보가 서버에 있으므로 비교적 느리다
수잔이 ‘처음’ 아마존 웹사이트에 방문할때 일어나는 일
- 수잔이 브라우저를통해 아마존에 접속한다.
- 아마존 웹 서버에 요청이 들어오면 수잔에 대한 유일한 식별번호를 만들어서 요청받은 메세지에 쿠키를 넣어 응답한다.
- 수잔의 브라우저는 응답받은 메세지에서 쿠키에대한 정보를 확인하고 저장한다.
- 다시한번 수잔이 아마존에 접속할때 브라우저는 쿠키파일을 요청 메시지에 넣어 아마존 서버로 보낸다.
- 아마존 서버는 쿠키파일을 확인하고 사용자를 추적할 수 있다.