[참고링크 : tistory]
HTTP 프로토콜의 특성이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용
- 
connectionless: 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어버리는 특징 
- 
stateless: 통신이 끝나면 상태를 유지하지 않는 특징 → 서버는 클라이언트가 누구인지 매번 확인 필요 → 이러한 특성을 보완하기 위해 쿠키와 세션 사용 
쿠키
- 로컬에 저장되는 키와 값이 있는 데이터 파일
- 사용자 인증 유효시간 명시 가능함
- 클라이언트에 300개까지 가능, 도메인당 20개, 하나의 쿠키값은 최대 4KB
- 구성요소: 이름, 값, 유효시간, 도메인, 경로쿠키의 동작 방식
- 
클라이언트가 페이지 요청 
- 
서버에서 쿠키 생성 
- 
HTTP 헤더에 쿠키 포함시켜 응답 
- 
브라우저 종료되어도 유효시간 내에서는 클라이언트에서 보관 
- 
같은 요청을 할 경우 HTTP헤더에 쿠키 함께 보냄 
- 
서버에서 쿠키를 읽고, 상태 변경 필요 있을 경우 쿠키 업데이트하여 응답 예시
 
세션
- 사용자 정보 파일을 서버측 관리
- 클라이언트를 구분하기 위해 세션ID를 부여하여 브라우저 종료시까지 인증상태 유지
- 쿠키보다 보안에 좋지만 서버 메모리 많이 차지하게 됨
- 클라이언트가 요청 보내면, 서버 엔진이 클라이언트에게 부여하는 유일한 ID가 세션 ID예시
쿠키 vs 세션
- 쿠키 : 사용자 브라우저에 저장되는 임시 정보. 사용자 임의로 저장되거나 삭제될 수 있어 중요도가 비교적 낮은 데이터만 쿠키로 저장함. 인터넷을 이용할때 임시 키도 쿠키에 저장되어 서버에서 사용자를 식별할 수 있게 됨
- 서버에 요청할 때 쿠키에 저장된 세션 id를 서버에 요청할때 같이 전달하여 요청
 
- 세션 : 서버에 임시로 저장한 파일. 중요한 데이터를 저장할 떄 사용하며 브라우저를 종료할 떄까지 유지됨.
주요 차이점
|  | 쿠키 | 세션 | 
|---|
| 저장위치 | 클라이언트 | 서버 | 
| 보안 | 취약 | 우수 | 
| 요청 속도 | 빠름 | 느림 | 
| 만료시간 | 만료기간 설정에 따라, 브라우저 종료해도 남아있음 | 만료시간에 관계없이 브라우저가 종료되면 삭제 | 
세션은 사용자 수 만큼 서버 메모리 차지하기 때문에,
속도가 느려질 수 있음
→ 토큰 기반 인증방식 JWT 사용하는 추세