쿠키와 세션 사용하는 이유 ; http프로토콜의 특징이자 약점을 보완하기 위해서 사용
http 프로토콜의 특징
1. 비연결지향 : http는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 특성이 있다.
2. 상태정보유지안함 : 연결이 끊는 순간 클라이언트와 서버의 통신이 끝나면 상태 정보는 유지하지 않는 특성이 있음
이 두가지 특성을 보완하기 위해 쿠키와 세션을 사용하게 된다.
쿠키(Cookie) : 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일
- 쿠키 내용 : 이름, 값, 만료날짜(쿠키 저장기간), 경로 정보
- 쿠키는 일정 시간동안 데이터 저장할 수 있음(로그인 상태 유지에 활용)
- 클라이언트의 상태 정보를 로컬에 저장했다가 참조
- 사용 : 자동 로그인, 팝업에서 오늘 '오늘 더이상 보지 않음' 체크, 쇼핑몰 장바구니
- 쿠키 프로세스 :
1. 브라우저에서 웹페이지 접속
2. 클라이언트가 요청한 웹 페이지를 받으면서 쿠키를 클라이언트 로컬에 저장
3. 클라이언트가 재 요청시 웹페이지 요청과 함께 쿠키값도 전송
4. 지속적으로 로그인 정보를 가지고 있는 것처럼 사용
- 쿠키의 제한 : 클라이언트에 300개까지 쿠키 저장 가능, 하나의 도메인당 20개의 값만 가질 수 있고 하나의 쿠키값은 4KB까지 저장
- 사용자가 따로 요청하지 않아도 브라우저가 Request시 Request Header를 넣어서 자동으로 서버에 전송함
세션(Session) : 일정 시간동안 같은 브라우저로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술
즉, 웹 브라우저를 통해 웹 서버에 접속한 이후로 브라우저를 종료할 때까지 유지되는 상태
- 세션 ID : 클라이언트가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여
- 사용 : 로그인 정보 유지
- 세션 프로세스 :
1. 클라이언트가 서버에 접속 시 세션 ID 발급
2. 서버에서는 클라이언트로 발급해준 세션ID를 쿠키를 사용해 저장
3. 클라이언트는 다시 접속할 때, 이 쿠키를 이용하여 세션ID값을 서버에 전달
즉, 세션을 구별하기 위해 ID가 필요하고 그 ID만 쿠키를 이용해서 저장
쿠키는 자동으로 서버에 전송되니까 서버에서 세션ID에 따른 처리를 할 수 있음
예를 들면 게시판 글 작성 시 작성 버튼 누르면 세션에 있는 ID 참조해 작성자를 지정함
쿠키와 세션의 차이
저장 위치 | 클라이언트에 파일로 저장 | 서버에 저장 |
보안 | 변질되거나 Request에서 스나이핑 당할 우려 있어서 보안에 취약 | 쿠키 이용해서 sessionID만 저장하고 그것으로 구분해서 서버에 처리하기때문에 비교적 보안 좋 |
라이프 사이클 | 만료시간 있지만 파일로 저장되기 때문에 브라우저 종료해도 계속해서 정보 남아있을 수 있음 | 만료기간 정할 수 있지만, 브라우저가 종료되면 만료시간 상관없이 삭제 |
속도 | 정보가 남아있기 때문에 서버에 요청시 속도 빠름 | 정보가 서버에 있기 때문에 처리가 요구되어 비교적 느린 속도 |
왜 쿠키 사용하나?
- 세션은 서버의 자원을 사용하기 때문에 무분별하게 만들다보면 서버의 메모리가 감당할 수 없어질 수가 있고 속도가 느려질 수 있기 때문에
*캐시는 무엇인가?
캐시는 이미지나 css, js파일 등이 사용자의 브라우저에 저장이 되는 것
이를 이용해 자원이 아껴지는 것, 한번 캐시에 저장되면 브라우저를 참고하기 때문에 서버에서 변경이 되어도 사용자는 변경되어 않게 보일 수 있는데 이런 부분을 캐시를 지워주거나 서버에서 클라이언트로 응답을 보낼 때 header에 캐시 만료시간을 명시하는 방법 이용할 수 있
'HTML & CSS & JAVASCRIPT' 카테고리의 다른 글
GET/POST 데이터 디코딩 (0) | 2019.06.20 |
---|---|
예제_회원가입 (0) | 2019.06.20 |
예제_push,pop (0) | 2019.06.20 |
예제_input type 활용 (0) | 2019.06.20 |
예제_계산기 (0) | 2019.06.20 |