HTTP 프로토콜의 특성이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용
connectionless: 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어버리는 특징
stateless: 통신이 끝나면 상태를 유지하지 않는 특징
→ 서버는 클라이언트가 누구인지 매번 확인 필요
→ 이러한 특성을 보완하기 위해 쿠키와 세션 사용
클라이언트가 페이지 요청
서버에서 쿠키 생성
HTTP 헤더에 쿠키 포함시켜 응답
브라우저 종료되어도 유효시간 내에서는 클라이언트에서 보관
같은 요청을 할 경우 HTTP헤더에 쿠키 함께 보냄
서버에서 쿠키를 읽고, 상태 변경 필요 있을 경우 쿠키 업데이트하여 응답
쿠키 | 세션 | |
---|---|---|
저장위치 | 클라이언트 | 서버 |
보안 | 취약 | 우수 |
요청 속도 | 빠름 | 느림 |
만료시간 | 만료기간 설정에 따라, 브라우저 종료해도 남아있음 | 만료시간에 관계없이 브라우저가 종료되면 삭제 |
세션은 사용자 수 만큼 서버 메모리 차지하기 때문에,
속도가 느려질 수 있음
→ 토큰 기반 인증방식 JWT 사용하는 추세