요청(requests) : 브라우저인 클라이언트에 의해 전송되는 메시지

응답(responses) : 그에 대해 서버에서 응답으로 전송되는 메시지

 

 

HTTP 특징

1. 비연결지향

서버는 요청에 대한 응답을 보낸 후 연결을 끊는다.

 

2. 무상태

연결을 끊는 순간 클라이언트와 서버의 통신이 끝나고 상태 정보가 유지되지 않는다.

클라이언트와 서버가 주고받는 메세지들은 독립적이다.

 

 

이런 특징에도 웹사이트를 이용할 때, 페이지 이동해도 로그인 상태가 유지된다. 서버와 클라이언트간 지속적인 상태유지를 위해 쿠키, 세션이 존재한다.

HTTP 쿠키는 상태가 있는 세션을 만들도록 한다.

 

 

쿠키

서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각

클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일 (KEY-VALUE 데이터 형식)

쿠키를 저장해두었다가, 동일한 서버에 재요청시 저장된 쿠키를 함께 전송한다.

사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다.

쿠키는 두 요청이 동일한 브라우저에 들어왔는지 아닌지를 판단할 때 사용되고 이를 이용해서 로그인 상태를 유지한다.

상태가없는 HTTP 프로토콜에서 상태 정보를 기억시켜준다.

 

웹 페이지에 접속하면 웹페이지를 응답한 서버로부터 쿠키를 받아서 브라우저에 저장, 클라이언트가 같은 서버에 재요청할 때 마다 요청과 함께 저장해두었던 쿠키도 함께 전송한다.

 

 

 

쿠키의 구성요소

name : 쿠키 이름
value : 쿠키에 저장한 값
expires : 쿠키를 언제 삭제 할지 정함
domain : 쿠키가 사용되는 도메인
path : 쿠키를 반환할 경로
secure : 보안연결 설정
httpOnly: http외에 다른 통신 사용가능 여부 설정

 

 

 

쿠키의 사용목적

1. 세션 관리로그인, 아이디 자동완성, 공지 하루 안보기, 팝업체크, 장바구니 등의 정보를 관리한다.

 

2. 개인화사용자 테마 등의 설정

 

3. 트래킹사용자 행동을 기록, 분석한다.

 

 

 

쿠키 수명

session cookie : 현재 세션이 종료되면 삭제, 브라우저 종료되면 삭제persistene cookies : expires 속성에 지정된 날짜나 max-age 속성에 지정된 기간이 지나면 삭제

 

 

 

 

세션 (Session)

사이트와 브라우저 사이의 상태를 유지시킨다.클라이언트가 서버에 접속하면 서버가 특정 session id를 발급하고, 클라이언트는 session id를 쿠키에 저장한다. 클라이언트가 다시 동일한 서버에 접속하면 요청과함께 session id가 저장된 쿠키를 서버에 전달한다.쿠키는 요청마다 서버에 함께 전송되므로 서버에서 session id를 확인해서 처리한다.

 

session id는 세션을 구별하는 것이고, 쿠키에는 session id만 저장된다.

 

 

 

django

django는 database-backed sessions 저장방식을 기본값으로 설정한다.

session 정보는 django DB의 django_session 테이블에 저장된다.

django는 특정 session id를 포함하는 쿠키를 사용해서 각각의 브라우저와 사이트가 연결된 session을 알아낸다.