일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- request영역
- Security
- Spring
- 회원정보
- session영역
- page영역
- 게시판댓글
- 스프링
- 게시판프로젝트
- ResponseEntity
- SCOPE
- 스프링시큐리티
- application영역
- 회원정보수정
- jsp
- 스프링회원정보수정
- RPTLANFTN
- 댓글수처리
- 내장객체
- 게시판댓글수
- 시큐리티
- Today
- Total
코코무의 코딩캔버스
[JSP] 쿠키(Cookie) 본문
쿠키란?
🍪 내가 만든 쿸이
클라이언트의 상태 정보를 클라이언트 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)로 이름과 값을 받아 쿠키를 생성한다.