Session
HTTP 프로토콜의 "통신이 끝나면 상태 정보를 유지하지 않는 특징(Stateless)" 때문에,브라우저에서 발생한 정보들이 페이지를 이동할 때 마다 초기화된다. 이러한 정보를 저장하기 위해 사용하는 것이 쿠키, 세션 그리고 웹 스토리지이다.
🧑🏻💻 Session
브라우저가 서버에 연결되어 있는 동안만 유지되는 데이터 집합이다. (세션 스토리지와 다르다.)
✅ cookie, session 차이점
✏️ 라이프 사이클
- cookie는 만료 시간을 설정하면 브라우저가 종료되어도 만료 시간이 남아 있으면 삭제되지 않지만,
- session은 만료 시간을 설정해도 브라우저가 종료되면 삭제된다.
✏️ 데이터 저장 위치외 보안
cookie는 방문자의 정보를 방문자의 컴퓨터 메모리에 저장하지만,
session은 방문자의 정보를 서버가 만든 Session ID와 함께 서버에 저장한다. 이 때문에 session의 보안이 더 좋다.
Response Header의 Set-Cookie를 통해 클라이언트의 Session ID값을 부여한다. 클라이언트와 서버간에는 Session ID만 주고받는 방식을 통해, 쿠키와 달리 로그인 정보에 대한 보안을 업그레이드 할 수 있다.
✏️ 속도와 트래픽 비용
- session은 정보가 서버에 있기 때문에 처리가 요구되어서 cookie보다 비교적 속도가 느린 편이다.
- 또한 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다.
✅ React Context와 cookie, session
React의 Context는 쿠키, 세션 또는 웹 저장소(로컬 스토리지 또는 세션 스토리지)와 직접적으로 관련이 없는 개념이다. React의 Context는 React 애플리케이션 내에서 컴포넌트 간에 데이터를 전달하고 공유하기 위한 메커니즘이다.
즉, Context를 사용하여 데이터를 관리하고, 개인 기능 제공을 위해 해당 상태 데이터를 사용자 브라우저의 쿠키, 세션 또는 로컬 스토리지에 저장할 수 있다.
참고 자료