본문 바로가기
프로그래밍/Back-end

Java 쿠키(Cookie)와 세션(Session)에 대해서!

by @GodWin 2024. 10. 10.

-




-
안녕하세요? 오늘은, Java에서의 쿠키(Cookie)와 세션(Session)에 대해서 알아보도록 하겠습니다.



※ 쿠키(Cookie)와 세션(Session)을 사용하는 이유
 : HTTP 프로토콜의 특징이자 약점을 보완하기 위해 사용

※ HTTP 프로토콜의 특징
 : 비연결지향(Connectionless), 상태정보유지안함(Stateless)
 
  [Client] > [Request] > [Server] > [Response] > [Disconnect]
 


쿠키(Cookie)

 : 클라이언트의 브라우저에 저장되는 작은 데이터 조각입니다.
 : 서버가 클라이언트에게 전송하고, 클라이언트는 이후 요청 시 이 쿠키를 서버에 다시 전송합니다.
 : 쿠키는 클라이언트의 브라우저에 저장되며, 클라이언트가 브라우저를 닫더라도 쿠키가 유효할 수 있습니다(지속 쿠키).
 : 쿠키는 일반적으로 4KB 이하의 데이터를 저장할 수 있습니다.
 : 만료 시간을 설정할 수 있어, 특정 시간 후에 자동으로 삭제됩니다.
 : 하이퍼 텍스트의 기록서(HTTP)의 일종입니다.
 : 클라이언트(Client) 로컬(Local)에 저장되는 키(Ket)와 값(Value)이 들어있는 작은 데이터파일(DataFile)
 : 일정시간동안 데이터 저장이 가능합니다.
 : 클라이언트(Client)의 상태정보를 로컬에 저장했다가 참조를 합니다.
 : 사용자가 따로 요청하지 않아도 브라우저가 요청(Request)시, Request Header를 넣어서 자동으로 서버에 전송합니다.
 : 사용자 로그인 정보, 사용자 선호 설정, 웹사이트 방문 기록 등에서 주로 사용됩니다.



프로세스

 1. 브라우저에서 웹페이지 접속
 2. 클라이언트가 요청한 웹페이지를 받으면서 쿠키를 클라이언트 로컬(하드)에 저장
 3. 클라리언트가 재 요청시 웹페이지 요청과 함게 쿠키값도 전송
 4. 지속적으로 로그인 정보를 가지고 있는 것처럼 사용



제한

 : 클라이언트에 300개까지 저장 가능
 : 하나의 도메인당 20개의 값만 가질 수 있음
 : 하나의 쿠키값은 4KB까지 저장 가능




세션(Session)

 : 서버 측에서 사용자 정보를 저장하는 방법입니다. 
 : 클라이언트가 서버에 연결하는 동안 생성되며, 연결이 종료되면 삭제됩니다.
 : 세션 데이터는 서버에 저장되므로, 클라이언트의 브라우저가 아닌 서버에서 관리됩니다.
 : 세션은 쿠키보다 더 많은 양의 데이터를 저장할 수 있습니다.
 : 서버에 저장되므로, 쿠키보다 상대적으로 안전하게 사용자 정보를 저장할 수 있습니다.
 : 클라이언트는 세션 ID를 쿠키 또는 URL 파라미터를 통해 서버에 전송하여 세션 정보를 유지합니다.
 : 일정시간동안 같은 브라우저로부터 들어오는 일련의 요구를, 하나의 상태로 보고 그 상태를 유지하는 기술입니다.
 : 클라이언트가 요청(Request)을 보내면 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여합니다.
 : 서버의 자원을 사용함으로 속도와 메모리 감당을 체크해야 합니다.
 : 로그인 상태 유지, 장바구니 정보, 사용자 세션 데이터 등.



프로세스

 1. 클라이언트가 서버에 접속 시, 세션 ID를 발급
 2. 서버에서는 클라이언트로 발급해준 세션 ID를 쿠키를 사용해 저장 : JSESSIONID
 3. 클라이언트는 다시 접속할 떄, 이 쿠키를 이용해서 세션 ID값을 서버에 전달



* 쿠키(Cookie)와 세션(Session)의 차이

저장 위치 클라이언트 (브라우저) 서버
데이터 크기 일반적으로 4KB 이하 서버의 메모리에 더 많은 데이터 저장 가능
유효 기간 만료 시간 설정 가능 세션 종료 시 (브라우저 종료 또는 세션 만료) 삭제
보안 상대적으로 낮음 상대적으로 높음
전송 방식 매 요청 시 클라이언트가 서버에 전송 세션 ID를 통해 서버와 클라이언트 간의 연결 유지
사용 사례 로그인 정보, 사용자 설정, 방문 기록 사용자 세션 정보, 장바구니 데이터 등

 


오늘은, Java에서의 쿠키(Cookie)와 세션(Session)에 대해서 알아보았습니다.
오늘도 즐거운 하루 되시길 바라겠습니다.