세션과 쿠키를 사용하는 이유?
세션과 쿠키를 사용하는 이유를 알기 위해 HTTP 프로토콜의 특징을 알아야 한다.
HTTP 프로토콜 통신은 connectionless
, statless
특징을 가지고 있다.
connectionless
TCP 통신과 다르게 클라이언트와 서버는 연결관계를 가지지 않는다.
즉, 클라이언트가 요청하고, 서버가 응답하면 연결을 끊는다.
statless
클라이언트와 서버가 요청과 응답을 주고 받고 통신이 끝나면, 상태를 따로 저장하지 않는다.
위와 같은 이유로 세션과 쿠키를 사용하여 상태에 대한 정보를 저장한다.
만약, 세션과 쿠키를 사용하지 않으면 쇼핑몰 사이트에서 로그인을 하고 페이지를 이동하면 다시 로그인해야 하는 번거로운 상황이 발생할 수 있다.
세션과 쿠키
세션과 쿠키는 둘 다 사용자의 정보를 담는다는 공통점이 있음
하지만, 어디에 저장하는지 위치에 대한 차이가 있음
- 세션(
Session
): 클라이언트와 서버에SESSION ID
로 저장됨 - 쿠키(
Cookie
): 클라이언트(브라우저)에 저장됨
세션(Session)
세션은 클라언트와 서버의 연결 상태 정보를 유지하기 위해 사용한다.
- 일정 시간동안 같은 브라우저에서 들어온 요청을 하나의 상태로 보고, 이 상태를 유지시켜주는 역할을 한다.
- 브라우저가 종료되는 시점에 세션은 서버에서 삭제된다.
- 세션은
Session ID
로 클라이언트를 구분하여, 각각의 사용자에 맞게 처리를 한다. - 세션 ID는 서버와 클라이언트 모두 저장된다.
참고로 세션ID를 JSESSIONID라는 쿠키에 저장한다고 오해하기도 하는데, 톰캣에서 JSESSIONID라는 이름으로 저장할 뿐이고, SESSION ID 키 이름은 서비스에 따라 다를 수 있다. (예를들어 PHP에서는 PHPSESSID를 사용함)
쿠키(Cookie)
쿠키는 클라이언트에 저장되는 데이터로 필요시 클라이언트에 저장된 데이터를 불러와서 사용한다.
key-value
(이름-값) 형태로 저장되며, 쿠키의 저장기간(만료일)도 설정할 수 있다.
세션 대신 쿠키를 사용하는 이유?
보안상으로 더 안전한 세션을 사용하지 않고, 쿠키를 사용하는 이유는 서버에 데이터가 저장된다는 이유 때문이다.
서버에 저장된다는 것은 서버의 자원(Resource)을 사용한다는 뜻이기 때문에, 사용자가 많은 서비스일 수록 그만큼 서버 자원도 많이 사용하게 된다는 단점이 있다.
'Frontend' 카테고리의 다른 글
yarn berry 환경에서 WebStorm, Actions on save 사용하기 (prettier, eslint) (0) | 2022.05.26 |
---|---|
이미지 포맷 종류(jpg, jpeg, png, gif, svg) (0) | 2021.12.16 |
[오류 해결] $.ajax is not a function 해결 방법 (5) | 2020.12.14 |
REST API와 GET, POST, PUT, DELETE 통신에 대해 (2) | 2020.12.11 |
RESTful API 개념 정리 (0) | 2020.09.08 |