29 May 2020
Session vs Cookie
Cookie
서버가 클라이언트에 저장하는 정보로서 클라이언트 쪽에 필요한 정보를 저장해놓고 필요할때 추출하는 것을 지원하는 기술이다
클라이언트와의 연결이 끊어져도 클라이언트마다 개별적으로 상태 정보를 유지하고자 할 때 쿠키 기술을 활용할 수 있다.
쿠키는 name과 value로 구성된 정보로서 필요에 따라 유지시간, 유효 디렉터리, 유효 도메인 등의 속성을 지정할 수 있다.
쿠키 생성
Cookie(String name,String value)
쿠키 유효 시간 설정
setMaxAge(int expiry)
0을 지정하면 삭제, 음수를 지정하면 브라우저 종료시 쿠키 자동삭제를 의미한다.
쿠키 경로 설정
setPath(String uri)
서버의 모든 요청에 대하여 쿠키가 서버쪽으로 전송되는 것이 아니라 특정 경로의 요청에서만 쿠키를 전송하고자
할때 경로지정이 가능합니다.
쿠키 도메인 설정
setDomain(String domain)
웹서비스는 하나의 서버에서만 전체 서비스를 하는게 아니기 때문에 도메인 설정을 통해 하나의 서버에서
클라이언트로 전송된 쿠키를 다른 서버에서 읽어 사용할 수 있습니다.
쿠키 전송
addCookie(Cookie cookie)
쿠키의 동작방식
1. 클라이언트가 페이지를 request
2. 서버에서 쿠키를 생성
3. HTTP헤더에 쿠키를 포함시켜 response
4. 브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있음
5. 같은 요청을 할 경우 HTTP헤더에 쿠키를 함께 보냄
6. 서버에서 쿠키를 읽어 이전 상태 정보를 변경할때 쿠키를 업데이트하여 변경된 쿠키를 HTTP 헤더에 포함시켜 response
Session
HTTP 기반으로 동작하는 클라이언트가 서버에 정보를 요청할 때 생성되는 ‘상태정보’를 세션이라고 한다
HttpSession 객체가 생성될 때는 요청을 보내온 클라이언트 정보,요청 시간 정보등을 조합한 세션 ID가 부여되며
이 세션 ID는 클라이언트 측에 쿠키 기술로 저장된다.
즉, HttpSession객체는 서버에 생성 , 클라이언트에는 세션ID가 쿠키기술로 저장되어 각 클라이언트에 대하여 생성되는
HttpSession 객체를 클라이언트마다 개별적으로 유지 및 관리 한다. 클라이언트마다 개별적으로 생성되어 유지되는
HttpSession 객체는 요청을 보내온 클라이언트와 서버간에 일정시간(브라우저가 살아 있는 동안) 동안 각 클라이언트의
상태정보를 서버에 저장하여 유지하고자 하는 목적으로 사용되는 객체입니다.
Session 과 Cookie 차이점
+ 요청 속도는 쿠키가 세션보다 빠르다 왜냐면 세션은 서버의 처리가 필요하기 때문이다.
+ 쿠키는 만료시간만 남아있다면 브라우저를 종료해도 정보가 남아있다.
+ 세션은 브라우저가 종료되면 만료시간에 상관없이 삭제된다.
+ Session은 서버에서 관리, Cookie는 클라이언트에서 관리한다.