일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프론트엔드
- 코멘토 #코멘토실무PT #실무PT후기 #실무강의 #리액트강의 #웹프로그래밍 #react #웹개발실무
- compateto
- api 비동기처리
- 유효시간 설정 url
- 스프링부트
- 모던 자바스크립트
- bucket4j
- 우아한테크코스
- oauth
- 프리코스
- AWS
- 검색
- api 요청 수 제한
- 프로그래머스
- 프론트엔드 과제
- 우아한 테크코스
- redis
- 딥다이브
- 자바스크립트
- TypeORM
- concurrency limit
- NestJS
- 파일 url
- Dev-Matching
- invalid_grant
- Deep Dive
- this
- 음악 url 파일 다운로드
- 타입스크립트
- Today
- Total
개발 알다가도 모르겠네요
http의 한계와 session&cookie의 보완 본문
비연결형 (stateless) 프로토콜 HTTP의 한계
한 페이지가 출력된 다음에는 클라이언트와 서버의 연결이 끊어진다.
무전기 방식.
(의도적으로 사용자가 서버연결을 끊지 않는다면 그에 대한 resource와 memory가 계속 할당.)
한번 로그인한 사용자가 로그아웃할 때까지 보관해야 할 정보가 있다면 이러한 비연결형 HTTP 프로토콜로만으로는 곤란하다.
그러나 오늘날의 웹서버 패턴에서는 옳바르지 않음. ex) 로그인 로그아웃 등의 인증.
session이 사용되는 경우
사용자 로그인 후 일정 시간이 지나거나 다른 페이지에서도 사용자가 여전히 로그인이 되어 있음을 판단할 때.
(일정시간 설정 가능)
로그인을 하지않아도 개인화를 위해 session 사용
ex) 쇼핑몰에서 장바구니 기능을 구현할 때 로그인 안해도 장바구니 가능 (하나의 섹션안에서 사용자임을 가정.)
사용자가 어떤 페이지를 다녀갔는지 등 웹 페이지 트래킹 기능을 구현할 때.
개인화 홈페이지 구현
세션과 쿠키의 가장 큰 차이는 '서버가 데이터를 기억하고 있는가' 이다.
세션은 서버에서 session_id 를 내려주면서 서버에도 세션값을 가지고 있는다.
마찬가지로 쿠키또한 서버에서 값을 내려주지만, 서버에는 쿠키값을 가지고 있지 않다.
그 때문에 쿠키는 신뢰할 수 없는 값이며 중요한 데이터는 쿠키에서 관리하지 않는다.
예를 들면, 쿠키는 보통 쇼핑몰에서 장바구니 혹은 방문기록 등에서 사용된다.
그렇다면 무조건 세션을 써야하는가?
이것은 아니다. 세션을 사용하게 될 경우 서버에서 세션값을 가지고 있어야 하므로 서버에 부하가 많이 가게 된다.
또한, 서버가 여러개로 나뉠 경우(MSA 와 같이) 모든 서버마다 세션을 동기화 해줘야하는 문제가 생기게 된다.
그렇기 때문에 현대의 백엔드 아키텍처에서 세션보다는 Oauth2 의 토큰 방식을 사용하게 된다.
토큰 방식을 사용하게 될 경우 서버측의 부하도 많이 줄어들게 되어, 쿠키와 세션의 모든 장점을 취할 수 있다.