일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- this
- array
- 엔퀸즈
- react
- grpahQL
- 연습
- 포스기
- 리액트
- 일상
- 초보
- method
- 해커톤
- 취업
- 제일어려워
- 클라이언트
- underbar
- 개발
- 자바스크립트
- 코딩
- JavaScript
- 알고리즘
- DOM
- underscores
- 코드스테이츠
- JS
- Instantiation Patterns
- 공부
- ftech
- nqueens
- vscode
- Today
- Total
analogcoding
쿠키 & 세션 & 토큰 본문
클라이언트와 정보 유지를 하기 위해 사용하는 것
서버와 클라이언트가 통신을 할 때 통신이 연속적으로 이어지지 않는다. 그때마다 서버는 클라이언트에 대한 인증을 해주어야 한다.
이러한 일은 웹페이지의 로딩을 느리게 만드는 요인이다. 이것을 해결하는 방법이 바로 쿠키와 세션이다.
쿠키(Cookie)
하이퍼 텍스트의 기록서(HTTP)의 일종으로 인터넷 사용자가 어떠한 웹 사이트를 방문할 경우 그 사이트가 사용하고 있는 서버에서 인터넷 사용자의 컴퓨터에 설치하는 작은 기록 정보 파일이다.
- 서버에 접속 시 접속한 클라이언트 정보를 자신의 하드 디스크에 저장했다가 필요할 때 참조나 재사용한다.
- 일정 시간동안 데이터를 저장할 수 있어 로그인 상태를 유지할 수 있다.
- 4KB 이하 저장 가능
- 이름, 값, 만료 날짜(쿠키 저장 기간), 경로 정보가 들어있다.
flow
세션(Session)
일정 시간동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술이다.
여기서 일정 시간은 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 말한다.
즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다.
- 웹 서버의 웹 컨테이너에 상태를 유지하기위한 정보를 저장한다.
- 저장 데이터에 제한이 없다.
- 웹 서버는 각각의 웹 브라우저로부터 발생한 요청에 대하여 특정한 식별자를 부여하여 같은 브라우저인지 구별한다.
- 세션 쿠키라고도 한다.
- 브라우저를 닫거나, 서버에서 이 쿠키를 삭제했을때만 삭제가 되므로 비교적 쿠키보다 안전하다고 할 수 있다.
- 통신할때만 발동이 되는 쿠키라고 할 수 있다.
- 각 클라이언트에게 고유 ID를 부여한다.
- Session ID로 클라이언트를 구분하여 클라이언트의 요구에 맞는 서비스를 제공할 수 있다.
flow
쿠키 vs 세션
1. 저장위치
- 쿠키 : 클라이언트의 웹 브라우저가 지정하는 메모리 또는 하드디스크.
단, 쿠키를 사용하지 않으면 쿠키는 저장되지 않는다.
- 세션 : 서버의 메모리에 저장된다.
2. 만료시점
- 쿠키 : 저장할 때 expires 속성을 정의해 무효화 시키면 삭제될 날짜를 정할 수 있다.
- 세션 : 클라이언트가 로그아웃하거나,
설정한 시간동안 반응이 없을경우 무효화 되기 때문에 정확한 시점을 알 수 없다.
3. 리소스
- 쿠키 : 클라이언트에 저장되고 클라이언트의 메모리를 사용하기 때문에 서버의 자원을 사용하지 않는다.
- 세션 : 세션은 서버에 저장되고 서버의 메모리로 로딩이 되기 때문에 세션이 생길때마다 리소스를 차지한다.
4. 용량제한
- 쿠키 : 클라이언트도 모르게 접속되는 사이트에 의하여 설정될 수 있기 때문에 쿠키로 인해 문제가 발생하는 것을 막고자
한 도메인당 20개 총 300개 하나의 쿠키 당 4KB로 제한해 놓았다.
* 하나의 도메인에서 설정한 쿠키값이 20개를 초과하면 가장 적게 사용된 쿠키부터 삭제된다.
* 쿠키는 값이 있는 곳에 저장하거나 배열형태의 쿠키에 단일 값을 저장하려고 할 때 아무런 경고없이 덮어쓴다.
- 세션 : 클라이언트가 접속하면 서버에 의해서 생성되므로 개수나 용량에 제한이 없다.
'Be well coding > Learn more' 카테고리의 다른 글
GraphQL (0) | 2019.07.25 |
---|---|
RDS & S3 & EC2 (0) | 2019.06.28 |
Promise / callback / 동기&비동기 (0) | 2019.06.21 |
Server & modules (0) | 2019.06.20 |
React start (0) | 2019.06.11 |