쿠키(Cookie), 세션(Session), local Storage
쿠키와 세션, 로컬 스토리지를 사용하는 이유
→ Http의 특징은 비연결을 지향하고 상태를 유지하지 않는 것인데 상태를 유지해야만 할때가 있어서 그때 쿠키와 세션을 사용합니다.
Connectless 프로토콜 (비 연결지향)
클라이언트가 서버에게 요청을 했을 때, 그 요청에 맞는 응답을 보낸 후 연결을 끊는 처리방식
Stateless 프로토콜
통신이 끝나면 상태를 유지하지 않는 특징
쿠키와 세션은 이 두자기 특징을 해결하기 위해 사용한다.
쿠키 (Cookie)
- 쿠키는 클라이언트(브라우저)
로컬에 저장되는키와 값이 들어있는 작은 데이터 파일이다. - 유효한 시간을 명시할 수 있고, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다.
쿠키 사용 예
- 방문 사이트에서 로그인 시, “아이디와 비밀번호를 저장하시겠습니까?”
- 쇼핑몰의 장바구니
- 팝업에서 “오늘 더이상 이 창을 보지 않음”
- 최근 검색한 상품들 광고에서 추천
세션 (Session)
- 서버에 저장되고 관리되어 진다.
- 웹 브라우저 당 1개씩 생성되며 웹 컨테이너에 저장되고 브라우저 종료시 소멸된다.
- 각 클라이언트 고유 Session ID를 부여한다.
- 보안 면에서 서버에 저장되니 우수하다
- 브라우저가 종료되면 만료시간에 상관없이 삭제된다.
세션 사용 예
- 화면이 이동해도 로그인이 풀리지 않고 로그아웃 전까지 유지
쿠키 vs 세션 vs 로컬 스토리지
| 쿠키 | 세션 | 로컬 스토리지 | |
|---|---|---|---|
| 저장 위치 | 클라이언트(접속자 PC) | 서버 | 클라이언트(접속자 PC) |
| 저장 형식 | text | object | string |
| 만료 시점 | 쿠키 저장시 설정 | 브라우저 종료시, 만료 삭제 | x (영구히 저장가능) |
| 사용하는 자원 | 클라이언트 | 웹 서버 | 클라이언트 |
| 용량 제한 | 총 300개, 하나의 도메인 당 20개, 하나의 쿠키 당 4KB | 서버가 허용하는 한 용량제한 없음 | 5MB |
| 속도 | 빠름 | 느림 | |
| 보안 | 안좋음 | 좋음 | 안좋음 |
| 전송 조건 | 매번 서버로 전송 | 매번 서버로 전송 | 요청해야 전송 |
세션을 이용하면 좋은데 왜 쿠키를 사용할까?
세션은 서버의 자원을 사용하기 때문에 서버 메모리가 감당할 수 없어 질 수가 있고 속도가 느려질 수 있다.
reference
https://interconnection.tistory.com/74