이챙의 개발 log
쿠키(Cookie) 와 (Session)
로그인을 개발하며 많이 마주쳤던 cookie session.
대충 어렴풋이 알다가 정확한 의미를 모르는것 같아서 이번에 공부해보았다.
HTTP 특성
HTTP는 인터넷상에서 데이터를 주고 받기 위해 서버/클라이언트 모델을 따르는 통신규약이다.
클라이언트가 요청을 보내면 서버가 응답을 한다.
이 HTTP는 특성을 가지고 있다. 바로 비연결성(Connectionless)과 비상태성(Stateless) 이다.
클라이언트가 보내는 요청을 저장하지 않는다. 서버는 자원을 절약하기 위해 응답을 처리하고 클라이언트와의 연결을 해제해 버리기 때문에 클라이언트 요청에 대한 정보를 저장하지 않는 것이다
이렇게 되면 로그인을 하더라도 다른페이지로 이동하면 또 로그인을 해야하는 불편함이 생긴다.
그래서 나온 해결 방법이 쿠키(cookie)와 세션(session)!
🍪 cookie
- 브라우저에 저장된 작은 정보 파일
- key 와 value 으로 구성, string 형태로 이루어져있음(Cookie: yummy_cookie=choco; tasty_cookie=strawberry)
- 클라이언트 요청에 서버가 응답할때 클라이언트 정보를 http header에 쿠키를 담아 전달
- 쿠키는 도메인마다 다르다
🙋
브라우저에 내 정보를 담은 쿠키를 저장하고 데이터를 요청하면 내 쿠키를 같이 보낸다!
서버에서 내 쿠키에 담겨진 정보를 확인하고 응답!
단점
- 클라이언트에 저장되기 때문에 보안에 취약(개인정보 유출)
- 용량이 작아 많은 정보를 담을 수 없다.
- 브라우저마다 지원형태가 다르다.
cookie 와 session
쿠키의 단점을 보완하기 위한 session.
사용자 정보를 쿠키가 아닌 서버에 저장.
- session id는 쿠키와 달리 개인정보를 담고있지 않는다.
- 사용자가 로그인 요청을 하면 서버는 사용자 정보를 세션db에 저장 후 쿠키에 session id를 담아 응답
- 클라이언트 요청이 있을 때 마다 서버는 쿠키에 담긴 session id를 확인하여 데이터를 응답
로그인 요청
로그인 후 데이터 요청
🙋
세션은 서버에서 이루어지고 클라이언트에게 고유한 session id를 발급한다.
로그인 후 페이지 이동시마다 클라이언트는 세션id가 담긴 쿠키를 요청하고 서버는 쿠키에 담긴 session id를 보고 클라이언트 정보를 확인 후 데이터를 응답해준다.
단점
- 세션에 너무 많은 정보를 담으면 과부하가 일어남
'web' 카테고리의 다른 글
옵티미스틱 UI(optimistic UI) 란 무엇인가! 🤔 (0) | 2023.01.12 |
---|---|
CROS(Cross-Origin Resource Sharing) 를 알고 해결하자 (0) | 2021.06.12 |
크롬 iframe 자동재생 설정 (youtube,vimeo) (2) | 2020.11.26 |
이챙(leechaeng)
프론트엔드 개발도 하고 뛰기도 하고