HTTP는 기본적으로 클라이언트가 request를 보내고 서버에서 response를 보내면 바로 연결을 끊는다. 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나고 상태정보를 유지하지 않는다.
때문에, 현재 접속한 사용자가 이전에 사용한 사용자인지 확인할 수 없다.
물론, 연결을 계속 유지하지 않아서 리소스 낭비가 줄어드는 것은 장점이지만, 통신할때마다 새로 연결해야해서 클라이언트는 매 요청마다 인증해야 되는 단점이 있다.
때문에 상태를 유지해야 할 필요성이 있고, 이를 위한 기술로 쿠키와 세션이 있다.
쿠키(Cookie)란?
클라이언트 로컬에 저장되는 키와 값이 있는 파일이다.
이름,값,유효 시간,경로등을 포함하고 있다.
클라이언트 상태 정보를 브라우저에 저장하여 참조한다.
구성요소
쿠키의 이름
쿠키의 값
쿠키의 만료시간
쿠키를 전송할 도메인 이름
쿠키를 전송할 경로
보안 연결 여부
HttpOnly 여부
동작방식
세션이란?
일정시간 동안 같은 브라우저로부터 들어오는 요청을 하나의 상태로 보고 그 상태를 유지하는 기술이다.
즉, 웹 브라우저를 통해 서버에 접속할때 부터 브라우저를 종료할때까지 유지되는 상태이다.
동작방식
웹브라우저가 서버에 요청
서버가 해당 웹브라우저(클라이언트)에 유일한 ID(session ID)를 부여함
4.웹브라우저는 이후 웹브라우저를 닫기까지 다음 요청 때 부여된 Session ID가 담겨있는 쿠키를 HTTP헤더에 넣어서 전송
5.서버는 세션ID를 확인하고,해당 세션에 관련된 정보를 확인한 후 응답