쿠키와 세션

HTTP는 무상태성( stateless )과 비연결성 ( Connectionless ) 의 특징을 가지고있기 때문에 사용자의 정보를 저장하기 위한 수단이 필요하다
쿠키와 세션은 이때 사용자의 정보를 저장하기위해 사용되는 기능이다
쿠키 => 클라이언트 PC에 사용자의 정보를 저장하는 용도
세션 => 서버상에 사용자의 정보를 저장하는 용도
쿠키
쿠키는 사용자의 컴퓨터에 저장되는 정보파일로 브라우저에서 header에 넣어서 서버측에 전송한다
브라우저에서 관리하기 때문에 노출될 위험이 있다
사용목적
- 세션관리 : 아이디, 접속시간, 장바구니 등의 서버가 알아야하는 정보 저장
- 개인화 : 사용자마다 적절한 페이지 제공
- 트래킹 : 사용자의 행동과 패턴분석
구성요소
- 이름 - 값 : key - value
- 유효기간 : 쿠키의 유통기한
- 도메인 : 전송 도메인
- 경로 : 쿠키를 전송할 경로
동작방식
- Client가 페이지 요청
- 서버에서 쿠키생성
- header에 쿠키를 넣어 응답
- 브라우저가 PC에 쿠키 저장 / 다시 WAS로 요청하면 쿠키를 담아서 전송
- 유효기간이 다 될때까지 Client가 보관
- 재방문시 쿠키가 남아있으면 요청과 함께 전송
세션
서버의 메모리에 객체형태로 저장되며, 사용자의 접속유무를 판단한다
브라우저 단위로 관리되어 브라우저를 종료하면 사라지며, 클라이언트마다 고유의 ID를 부여한다
사용자의 증가에 따라 서버의 메모리부하가 커질 위험이 있다
제한시간을 두어 시간이 종료되면 정보유지를 멈출 수 있다
동작방식
- Client가 최초 페이지 접속 ( 세션 없음 )
- 세션정보를 새로 생성 및 저장하고, 세션 ID를 쿠키로 만들어서 응답
- Client는 JSESSIONID 라는쿠키에 Server에서 넘겨준 session-id값을 저장
- Client가 재접속을 하면 JESSIONID를 서버에 전달
- 서버에 저장된 session-id와 비교 후 처리