HTTP
는 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다.HTTP
는 비연결성 및 무상태성이라는 특징을 가지고 있다.HTTP
는 요청 처리 후 연결을 끊어버리기 때문에 클라이언트의 상태 정보 및 현재 통신 상태가 남아있지 않다.Cookie
와 Session
이라는 기술이 존재하는데 이 둘의 정의는 무엇이고 차이점은 무엇인지 알아보자.쿠키(Cookie)
란 클라이언트가 어떤 웹 사이트를 방문한 경우, 그 사이트가 사용되고 있는 서버를 통해 클라이언트의 브라우저에 설치되는 작은 파일 기록을 말한다.
서버는 클라이언트의 로그인 요청에 대한 응답을 작성할 때, 클라이언트 측에 저장하고 싶은 정보를 응답 헤더의 Set-Cookie
에 담는다.(쿠키는 Key-Value
형식의 문자열) 이후 해당 클라이언트는 요청을 보낼 때마다 매번 저장된 쿠키를 요청 헤더의 Cookie
에 담아 보낸다. 서버는 쿠키에 담긴 정보를 바탕으로 해당 요청의 클라이언트가 누군지 식별할 수 있다.
쿠키의 저장 위치 : 클라이언트
쿠키의 처리 주체 : 서버/클라이언트(서버에서도 쿠키에 저장할 값을 설정할 수 있음)
쿠키 제한 : 쿠키 당 4kb, 도메인 당 20개까지)
쿠키 보안 : 비교적 낮음
쿠키 유효기간 : 데이터 형식에 유효기간을 같이 저장(설정된 유효기간이 지나면 클라이언트에서 파기, 유효기간과 무관하게 직접 파기도 가능)
세션(Session)
은 비밀번호 등 클라이언트의 인증 정보를 쿠키가 아닌 서버 측에 저장하고 관리한다.
서버는 클라이언트의 로그인 요청에 대한 응답을 작성할 때, 인증 정보는 서버에 저장하고 클라이언트의 식별자인 JSESSIONID
를 쿠키에 담는다. 이후 클라이언트는 요청을 보낼 때마다 JSESSIONID
쿠키를 함께 보낸다. 그리하면 서버는 JSESSIONID
의 유효성을 판별해 클라이언트를 식별한다.
세션의 저장 위치 : 서버
세션의 처리 주체 : 서버
세션 제한 : 명시적인 용량 제한 없음
세션 보안 : 비교적 높음
세션 유효기간 : 데이터 형식엔 유효기간 없음(서버에서 원하는 시점에 파기)