1. 쿠키란?
- 클라이언트 단에 저장되는 작은 정보의 단위
- 클라이언트에서 생성하고 저장될 수 있고, 서버단에서 전송한 쿠키가 클라이언트에 저장될 수 있다.
2. 이용방법
- 서버에서 클라이언트의 브라우저로 전송되어 사용자의 컴퓨터에 저장.
- 저장된 쿠키는 다시 해당하는 웹 페이지에 접속할 때, 브라우저에서 서버로 쿠키를 전송
- 쿠키는 이름(name)과 값(value)로 구성된 자료를 저장.
- 이름- 값 쌍 외에도 주석(Comment), 경로(Path), 유효기간(Max-Age, Expires), 버전(version), 도메인(domain), 보안(Secure), HttpOnly 속성을 저장할 수 있다.
3. 쿠키 정의
- 쿠키는 그 수와 크키에 제한이 있다. (브라우저 별로 다르다. http://browsercookielimits.squawky.net/ 참고)
- 하나의 쿠키는 4K Byte 크기로 제한.
- 브라우저는 각각의 웹 사이트 당 20개의 쿠키를 허용.
- 모든 웹 사이트를 합쳐 최대 300개를 허용
- 그러므로 클라이언트 당 쿠키의 최대 용량은 1.2M Byte.
4. javax.servlet.http.Cookie
- 서버에서 쿠키를 생성, Response의 addCookie 메소드를 이용해 클라이언트에 전송
Cookie cookie = new Cookie(이름, 값);
response.addCookie(cookie);
- 쿠키는 (이름, 값)의 쌍 정보를 입력하여 생성.
- 쿠키의 이름은 알파벳, 숫자, 언더바로만 구성되고, 쿠키 값은 공백, 괄호, 등호, 콤마, 콜론, 세미콜론 등은 포함 불가능. (RFC 6265(https://tools.ietf.org/html/rfc6265) 문서 [4.1.1 Syntax] 항목을 참조)
5. javax.servlet.http.Cookie
- 클라이언트가 보낸 쿠키 정보 읽기.
Cookie[] cookies = request.getCookies();
(쿠키 값이 없으면 null이 반환되므로 NullPointerException에 유의.)
- Cookie가 가지고 있는 getName()과 getValue() 메소드를 이용해서 원하는 쿠키 정보를 찾아 사용한다.
- 클라이언트에게 쿠키 삭제 요청
- 쿠키의 관리는 웹 클라이언트가 하기 때문에 서버에서 쿠키를 삭제하는 명령은 없고, maxAge가 0인 같은 이름의 쿠키를 전송한다. (같은 이름의 쿠키는 두개 이상 존재 할 수 없기 때문에 같은 이름의 쿠키가 전송되면 쿠키를 교체 하는데, Max-Age가 0이기 때문에 해당 쿠키가 삭제됨.)
Cookie cookie = new Cookie("이름", null);
cookie.setMaxAge(0);
response.addCookie(cookie);
- 쿠키의 유효기간 설정
- 메소드 setMaxAge()
- 인자는 유효기간을 나타내는 초 단위의 정수형
- 만일 유효기간을 0으로 지정하면 쿠키의 삭제
- 음수를 지정하면 브라우저가 종료될 때 쿠키를 삭제
- 유효 기간을 10분으로 지정하려면
- 메소드 setMaxAge()
cookie.setMaxAge(10 * 60);
6. Spring MVC에서의 Cookie 사용
- @CookieValue 어노테이션 사용
- 컨트롤러 메소드의 파라미터에서 @CookieValue 어노테이션을 사용함으로써 원하는 쿠키 정보를 파라미터 변수에 담아 사용할 수 있다.
컨트롤러 메소드(@CookieValue(value = "쿠키 이름", required = false, defaultValue = "기본값") String 변수명)
참조 URL
'Web' 카테고리의 다른 글
Session이란? (0) | 2020.07.17 |
---|---|
상태정보란? (0) | 2020.07.17 |
WAS란? (0) | 2020.07.06 |
Web API란? (0) | 2020.07.01 |
REST API란? (0) | 2020.07.01 |