코코무의 코딩캔버스

[JSP] 쿠키(Cookie) 본문

카테고리 없음

[JSP] 쿠키(Cookie)

코코무 2024. 2. 1. 14:14
쿠키란?

 

🍪 내가 만든 쿸이

 

클라이언트의 상태 정보를 클라이언트 PC에 저장할 수 있는 쿠키.

 

쿠키는 기본적으로 웹사이트가 방문자를 기억하는 수단이다.

언제 방문했는지, 어떤 페이지를 클릭했는지, 어떤 상품을 구매했는지 등

클라이언트에 대한 다양한 정보를 기록해 두었다가

이를 활용하여 사용자 맞춤 서비스, 광고, 웹 로그분석, 서비스 속도 개선 등을 할 수 있다.

 

상태 정보를 클라이언트에 key/value 형태로 저장했다가 다음 요청 시 저장된 쿠키를 함께 전송한다.

웹서버는 브라우저가 전송한 쿠키로부터 필요한 데이터를 읽어 올 수 있다.

 

  • 쿠키 표준 제약(RFC 6265)

- 3000개까지 만들 수 있다.

- 쿠키 하나의 최대 크기는 4096byte이다.

- 하나의 호스트나 도메인에서 최대 50개까지 만들 수 있다.

- 쿠키로 저장할 수 있는 최대용량은 1.2MB이다.

- 모든 브라우저가 표준을 그대로 따르지는 않으며 대부분 이보다 적은 수만 지원한다.

 


 

기본 동작 확인

 

  • 동작 메커니즘

1. 클라이언트서버에게 요청을 보낸다(최초 방문).

2. 서버가 쿠키를 생성하여 http 응답 헤더에 실어 클라이언트에 전송한다.

3. 클라이언트쿠키를 받아 저장해 둔다(사용은 불가).

4. 클라이언트는 다음 번 요청 시 저장해 둔 쿠키를 http 요청 헤더에 실어 보낸다.

5. 서버는 쿠키의 정보를 읽어 필요한 작업을 수행한다.

 

쿠키가 처음 만들어진 시점에는 서버가 아직 쿠키를 읽을 수 없다.

다음 번 요청 때부터 클라이언트가 전송해주기 때문이다.

페이지를 새로 고치거나 다시 접속을 해야 서버가 쿠키를 읽어 활용하게 된다.

 


 

쿠키 속성과 API

 

  • 속성

- 이름(name): 쿠키를 구별하는 이름

-  값(value): 쿠키에 저장할 실제 데이터

- 도메인(domain): 쿠키를 적용할 프로젝트 안의 도메인

- 경로(path): 쿠키를 적용할 프로젝트 안의 경로

- 유지기간(max age): 쿠키를 유지할 기간

 

  • 메서드

- void setValue(String value)

쿠키의 값을 설정한다.

문자열을 입력하면 되는데 쉼표, 세미콜론 같은 문자는 포함되지 않는다.

 

- void setDomain(String domain)

쿠키에 적용할 도메인을 설정한다.

주 도메인만 적용하고 싶으면 도메인 형태로 기술하고 주 도메인 이외의 서브 도메인에 적용하고 싶다면 도메인 형태로 기술한다.

 

- void setPath(String path)

쿠키가 적용될 경로를 지정한다. 지정한 경로와 그 하위 경로까지 적용된다.

 

- void setMaxAge(int expire_seconds)

쿠키 유지시간을 초단위로 설정한다. 기간을 설정하지 않으면 웹 브라우저가 닫힐 때 쿠키도 같이 삭제된다.

 

  • 이름을 설정하는 setName()이 보이지 않음

쿠키의 이름은 생성자를 통해 설정하고, 생성 후에는 더 이상 이름을 변경할 수 없다. new Cookie(String name, String value)로 이름과 값을 받아 쿠키를 생성한다.