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