1. Cookie
쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다.
쿠키에는 이름,값,만료날짜(쿠키 저장기간), 경로 정보가 들어있습니다.
쿠키는 일정시간동안 데이터를 저장할 수 있습니다.(로그인상태 유지에 활용)
쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조합니다.
1-2. Cookie Process
-브라우저에서 웹페이지 접속
-클라이언트가 요청한 웹페이지를 받으면서 쿠키를 클라이언트 로컬(하드)에 저장
-클라이언트가 재 요청시 웹페이지 요청과 함께 쿠키값도 전송
-지속적으로 로그인 정보를 가지고 있는 것 처럼 사용
1-3. Cookie 사용 사례
-자동로그인
-팝업에서 오늘 더이상 이창을 보지 않음 체크
-쇼핑몰 장바구니
1-4. Cookie의 제한
클라이언트에 300개까지 쿠키저장 가능, 하나의 도메인당 20개의 값만 가질 수 있음
하나의 쿠키값은 4KB까지 저장
Resopnse Header에 Set-Cookie속성을 사용하면 클라이언트에 쿠키를 만들 수 있다.
쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시에 RequestHeader를 넣어서 자동으로 서버에 전송한다.
2. Session
일정 시간동안 같은 부라우저로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술
즉, 웹 브라우저를 통해 웹 서버에 접속한 이후로 브라우저를 종료 할 때 까지 유지되는 상태
클라이언트가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는데 이것이 Session ID다.
2-1 Session process
클라이언트가 서버에 접속시 SessionID를 발급
서버에서는 클라이언트로 발급해준 SessionID를 Cookie를 사용해 저장(JESESSIONID)
클라이언트는 다시 접속할 때 이 Cookie를 사용해서 SESSIONID값을 서버에 전달
즉,Session을 구별하기 위해 ID가 필요하고 그 ID만 Cookie를 이용해서 저장해 놓는다.(Cookie사용)Cookie는 자동으로 서버에 전송되니까 서버에서 SessionID에 따른 처리를 할 수 있음
예를 들면 게시판에 글을 작성할 때 작성 버튼을 누르면 Session에 있는 아이디를 참조해서 작성자를 지정하게 한다.
1-3 Session 사용사례
-로그인 정보 유지
3 Cookie와 Session의 차이
-저장위치
쿠키는 클라이언트에 파일로 저장, 세션은 서버에 저장
-보안
쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 request에서 스나이핑 당할 우려가 있어 보안에 취약하지만 Session은 Cookie를 이용해서 SessionID만 저장하고 그것으로 구분해서 서버에서 처리하기 때문에 비교적 보안성이 좋다.
-라이프 사이클
Cookie : 만료시간이 있지만 파일로 저장되기 때문에 브라우저를 종료해도 계속해서 정보가 남아 있을 수 있다. 또한 만료 기간을 넉넉하게 잡아두면 쿠키삭제를 할 때 까지 유지 될수도있다
Session : 만료시간을 정할 수 있지만 브라우저가 종료되면 만료시간에 상관없이 삭제된다.
-속도
Cookie에 정보가 있기 때문에 서버에 요청시 속도가 빠르고 Session은 정보가 서버에 있기 때문에 처리가 요구되어 비교적 느린 속도를 낸다
4. Session을 주로 사용하면 좋은데 왜 Cookie를 사용할까??
세션은 서버의 자원을 사용하기 때문에 무분별하게 만들다 보면 서버의 메모리가 감당할 수 없어질 수가 있고 속도가 느려질 수 있기 때문이다
번외
cookie와 session은 cash와 엄연히 다르다
cash는 이미지나 css,js파일등이 사용자의 브라우저에 저장이 되는 것이다.
이를 이용해 자원이 아껴지는 것, 한번 캐시에 저장되면 브라우저를 참고하기 때문에 서버에서 변경이 되어도 사용자는 변경되지 않게 보일 수 있는데 이런 부분을 캐시를 지워주거나 서버에서 클라이언트로 응답을 보낼 때 header에 캐시 만료 시간을 명시하는 방법등을 이용 할 수 있다.
참고 사이트
'차근차근 궁금 뽀각' 카테고리의 다른 글
List와 Map의 차이점 (0) | 2019.12.09 |
---|---|
GET, POST 비교 (0) | 2019.12.09 |
jsp와 HTML 비교 (0) | 2019.12.04 |