길민호(ethan.mino)
코딩수첩
길민호(ethan.mino)
전체 방문자
오늘
어제
  • 분류 전체보기 (215)
    • Computer Science (0)
    • Web (6)
      • CSS (0)
      • HTML (0)
    • Node.js (0)
    • Javascript (2)
    • Java (46)
      • Spring (27)
      • Jsp (0)
    • C\C++ (2)
    • Programming (0)
    • AI (0)
    • Database (7)
    • Git (5)
    • Algorithm (119)
      • Stack (0)
      • Queue (0)
      • Linked List (0)
      • Sort (0)
      • Simulation (27)
      • Recursion (0)
      • Backtracking (4)
      • Two Pointer (3)
      • Dynamic Programming (19)
      • Greedy (10)
      • Graph (3)
      • Dijkstra (1)
      • BFS\DFS (8)
      • Floyd (1)
      • MST (4)
      • Tree (4)
      • Binary Search (8)
      • Binary Search Tree (4)
    • IntelliJ (4)
    • Vscode (0)
    • Operating System (0)
    • 후기 (3)
    • 성장일지 (13)
    • 스터디 (7)
    • 설치 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ㅡ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
길민호(ethan.mino)

코딩수첩

쿠키란?
Web

쿠키란?

2020. 7. 17. 06:10

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분으로 지정하려면 
cookie.setMaxAge(10 * 60);

Cookie의 메소드

6. Spring MVC에서의 Cookie 사용

  • @CookieValue 어노테이션 사용
    • 컨트롤러 메소드의 파라미터에서 @CookieValue 어노테이션을 사용함으로써 원하는 쿠키 정보를 파라미터 변수에 담아 사용할 수 있다.
컨트롤러 메소드(@CookieValue(value = "쿠키 이름", required = false, defaultValue = "기본값") String 변수명)

 

 

참조 URL

  • https://www.edwith.org/boostcourse-web/lecture/16799/

'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
    'Web' 카테고리의 다른 글
    • Session이란?
    • 상태정보란?
    • WAS란?
    • Web API란?
    길민호(ethan.mino)
    길민호(ethan.mino)
    💻 호기심 많은 서버 개발자 길민호입니다.

    티스토리툴바