ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cookie
    STUDY/프론트엔드 2021. 2. 8. 15:40

    Cookie란?

    - key와 value 값이 들어 있는 작은 데이터 조각으로 name, value, expires, path, domain, secure 정보를 가진다.
    - 서버와 클라이언트에서 모두 저장하고 사용할 수 있다.
    - 일정 기간 동안 데이터를 브라우저에 저장할 수 있다.

     

    * javascript

    document.cookie = "Name=Value; Expires=날짜; Domain=도메인; Path=경로; Secure";
    • name과 value : 데이터를 저장하고 읽는 데 사용하는 속성으로 쿠키를 사용할 때는 name과 value를 반드시 지정해야 한다.
    • expires : 쿠키의 만료 날짜를 지정하는 것으로 GMT 또는 UTC 형식의 날짜를 입력해야 한다. 만료 날짜를 지정하지 않을 경우 브라우저가 종료될 때 쿠키가 삭제된다.
    • domain : domain 속성을 설정하지 않으면 현재 도메인의 경로로 자동 입력된다. 페이지 요청과 비교해서 도메인의 경로와 domain 속성이 일치하지 않으면, 쿠키에 접근하는 것을 막으므로 domain 속성은 건드리지 않는다
    • path : path 속성을 설정하지 않으면 현재 도메인의 경로로 자동 입력된다. 보통 "/특정 경로/" 로 설정되는데, 이렇게 설정하면 현재 경로 또는 현재 경로의 하위 경로에서 접근할 수 있다. "/"로 설정하면 도메인 내의 모든 곳에서 접근할 수 있다.
    • secure : 해당 속성을 지정하면 SSL을 사용해서만 쿠키를 요청할 수 있다.

     

    1. 쿠키 생성

    function setCookie(name, value, expired) {
        let date = new Date();
        date.setDate(date.getDate() + expired);

        let cookieValue = escape(value) + ("; expires=" + date.toUTCString()) + "; path=/";
       
        document.cookie = name + "=" + cookieValue;
    }

     

    2. 쿠키 읽어오기

    function getCookie(cookieName) {
        let cookieData = document.cookie;
        let cookies = cookieData.split("; ");
        let cookieValue = '';

        for (let i=0; i<cookies.length; i++) {
             if (cookies[i].split("=")[0] === cookieName) {
                cookieValue = cookies[i].split("=")[1];
            }
        }
       
        return unescape(cookieValue);
    }

     

    3. 쿠키 삭제

    function deleteCookie(cookieName) {
        let date = new Date();
        date.setDate(date.getDate() - 1);
       
        document.cookie = cookieName + "= " + "; expires=" + date.toUTCString() + "; path=/";
    }

     

    * JAVA

    • 쿠키 생성
      • 웹서버는 생성한 쿠키를 응답데이터의 헤더에 저장하여 웹브라우저에 전송한다.
    • 쿠키 저장
      • 웹 브라우저는 응답데이터에 포함된 쿠키를 쿠키 저장소에 보관한다.
      • 쿠키 종류에 따라 메모리나 파일에 저장한다.
    • 쿠키 전송
      • 웹브라우저는 저장한 쿠키를 요청이 있을 때마다 웹서버에 전송한다.(삭제되기전까지)
      • 사용자가 웹서버에 요청할 때마다, 요청한 url에 맞는 저장된 유효한 쿠키가 있는지 확인해서 그 쿠키를 요청시에 함께 전송한다.
      • 웹서버는 브라우저가 전송한 쿠키를 사용하여 필요한 작업을 수행한다.

     

    1. 쿠키 생성

    Cookie cookie = new Cookie("cookieName", "cookieValue");
    // 쿠키n값에 한글을 사용시 인코딩 처리
    // Cookie cookie = new Cookie("cookieName", URLEncoder.encode(cookieValue, "utf-8"));

    // 쿠키 소멸 시간 설정(초단위) => 지정하지 않으면 웹브라우저 종료할 때 쿠키를 함께 삭제 
    cookie.setMaxAge(60*60*24);

    // 쿠키 사용 범위(경로) 설정
    cookie.setPath("/");

    // 자바스크립트의 document.cookie를 이용해 쿠키에 접속하는 것을 막는 옵션 설정
    cookie.setHttpOnly(true);

    // 응답헤더에 쿠키 추가 
    response.addCookie(cookie);

    // 인코딩 및 Content-Type 설정
    response.setCharacterEncoding("utf-8");
    response.setContentType("text/html");

     

    2. 쿠키 사용

    // 현재 도메인에서 사용중인 쿠키 정보 배열 가져오기 
    Cookie cookies [] = request.getCookies();

    if (cookies != null) {
        for (Cookie cookie : cookies) {
            System.out.println("cookie name : " + cookie.getName() + ", cookie value : " +                                                                        URLDecoder.decode(cookie.getValue(), "UTF-8")); 
        }
    }

     

    3. 쿠키 삭제

    Cookie cookies [] = request.getCookies();

    if (cookies != null) { 
        for (Cookie cookie : cookies) {
            // 쿠키의 유효시간을 0으로 설정해서 바로 만료시킨다. 
            cookie.setMaxAge(0);

            // 응답에 쿠키 추가
            response.addCookie(cookie);
        } 
    }

     

    4. 특정 쿠키 삭제

    // 기존에 'name'이라는 쿠키가 존재할 경우 값을 null로 만든다.
    Cookie cookie = new Cookie("name", null)

    // 쿠키의 유효시간을 0으로 설정해서 바로 만료시킨다. 
    cookie.setMaxAge(0);

    // 응답에 쿠키 추가
    response.addCookie(cookie);

    'STUDY > 프론트엔드' 카테고리의 다른 글

    Array.forEach()  (0) 2021.05.06
    Vue.js  (0) 2021.04.28
    Ajax Cache  (0) 2021.04.28
    History.replaceState()  (0) 2021.02.04
    DragEvent  (0) 2021.02.04
Designed by Tistory.