반응형
쿠키, 세션의 차이점은?
이라는 질문을 기술면접 2번동안, 2번 다 물어보셨었다.
쿠키는 브라우저에 저장되고, 세션은 서버에서 관리한다... 이정도로만 대답을 했었는데 뭔가 시원한 대답은 아니었다..ㅠㅠ
어중간하게 알고있던 것들을 제대로 알기위해 앞으로 기술면접에서 받았던 질문들 위주로 공부해서 포스팅해볼 예정이다!
쿠키, 세션을 사용하는 이유
HTTP의 대표적인 특징 중 하나가 Stateless하다는 것이다.
예를들면, 로그인을 했을 때 다른 페이지로 이동을 하게되면 상태가 유지되지 않기 때문에 사용자가 로그인을 했는지, 누구인지를 다시 잊어버리게 된다.
그래서 이런 상태값을 저장함으로써 사용자의 현재 상태값을
쿠키, 세션의 차이점은?
둘다 Stateful한 경우를 위해 사용되는데, 차이점은 저장위치라고 할 수 있다.
쿠키는 클라이언트(브라우저) 로컬에 저장하고, 세션은 서버에 저장한다.
🍪 쿠키 (Cookie)
- 사용자 브라우저에 저장됨
- key, value 로 구성
- 통신 시 HTTP헤더에 포함하여 서버에 전송됨
- 이름(key), 값(value), 유효시간, 도메인(쿠키를 전송할 도메인), 경로정보(쿠키를 전송할 요청 경로) 포함
- 사용자 브라우저에 저장된 값을 확인가능하기 때문에 보안성이 낮음
동작방식
- 클라이언트에 저장된 쿠키가 없을 땐, 쿠키 없이 Request 보냄
- 서버에서 사용자 정보를 이용하여 쿠키 생성 후 Response에 담아서 응답
- 클라이언트는 받은 쿠키를 로컬에 저장
- 서버에 요청을 보낼 때, 저장된 쿠키를 헤더에 포함하여 요청
- 서버는 받은 쿠키를 확인하여 응답, 이 때 쿠키의 변경이 필요하다면 변경된 쿠키를 전달
쿠키 사용 예시
- 자동로그인 시 로그인여부, 유저식별자 등을 저장
- 쇼핑몰 장바구니 기능
- 팝업창에서 "오늘 더 이상 이 창을 보지 않음" 체크
🖥️ 세션 (Session)
- 쿠키와 달리 서버에서 관리
- 클라이언트에 세션ID부여, 브라우저 종료할 때까지 인증상태 유지됨
- 서버에 저장되므로, 데이터 탈취가 어려움, 보안성이 비교적 높음
- 하지만, 동접자 수가 많은 경우, 서버에 과부하를 주어 성능저하 원인이 됨
동작방식
- 클라이언트가 서버 접속 시 세션ID 발급받음
- 클라이언트는 발급받은 세션ID를 쿠키로 저장
- 서버에 요청할 때, 세션ID를 전달
- 서버에서는 전달받은 세션ID로 클라이언트 정보가져옴
- 가져온 클라이언트 정보로 처리 후 응답
세션 사용예시
주로 로그인 시, 세션을 생성하여 관리
+) 캐시(Cache)
쿠키, 세션을 얘기할 때 덤으로 같이 딸려나오는 내용이 캐시인 것 같다
캐시는 로컬에 서버에서 받은 데이터를 저장한 파일이다.
목적은 로딩속도 개선!
같은 웹페이지에 접속할 때 이전 데이터를 사용할 가능성이 높으므로, 용량이 큰 이미지 등을 저장해두어 로딩속도를 높이기 위해 사용된다.
로컬에 저장된다는 점에서 쿠키와 유사한 부분이 있지만, 쿠키와는 목적이 다르다고 할 수 있다.
반응형
'etc. > 개념정리' 카테고리의 다른 글
Restful API란 무엇인가? (0) | 2021.09.13 |
---|