쿠키 (Cookie)

<aside> 💡 서버는 사용자에 대해 기억하기 위해 브라우저에 특정 데이터(쿠키)를 넣을 수 있다. 쿠키를 받은 사용자는 다음 요청시에 쿠키를 같이 보내게 된다

** 인증 처리에서는 "세션 ID를 전달하기 위한 매개체"일 뿐이다.

</aside>

                                  [그림1]. 쿠기를 주고 받는 서버와 클라이언트(브라우저)
  1. 사이트 방문시, 브라우저는 서버에 요청을 보내는데 (request)

  2. 서버는 이에 응답함 (response) 이 때, 사용자가 원하는 데이터와 페이지 정보도 주는데 여기에 쿠키 정보도 섞어서 줌

  3. 브라우저는 다음 요청시(request) 서버에 쿠키 정보를 같이 보내게 된다.

<aside> 💡 - 쿠키는 도메인에 따라 제한된다. (ex. 유튜브가 준 쿠키는 유튜브에만 보내짐)

</aside>

Cookie를 저장하는 방법

<aside> 💡 브라우저 나갔을때 쿠키 저장되는법은 유지시간을 주면 된다.

</aside>

  1. Cookie 객체를 생성한다. ⇒ ‘쿠키이름’과 ‘쿠키값’을 문자열로 지정해서 생성한다.

    형식) Cookie cookie변수 = new Cookie(”쿠키이름”, “쿠키값”);

    쿠키값으로 한글을 사용할 경우에는 URLEncoder.encode() 메서드로 인코딩한 후 저장한다.

Cookie nameCookie = new Cookie("name", URLEncoder.encode("홍길동", "utf-8"));
Cookie ageCookie = new Cookie("age", "30");
Cookie genderCookie = new Cookie("gender", "Male");
  1. 쿠키 속성 설정

    cookie변수.setPath(”적용경로”) → 지정한 경로와 그 하위 경로에서 사용할 수 있다. 생략하면 쿠키를 설정할 당시의 경로가 설정된다.

    cookie변수.setDomain("적용도메인명");

    예)".ddit.or.kr" => www.ddit.or.kr, cafe.ddit.or.kr, 등등

    cookie변수.setMaxAget(유지시간) → 단위(초) (-1: 브라우저가 종료될 때까지 유지된다.(기본값) ( 0: 즉시 쿠키가 삭제된다.)

    cookie변수.setSecure(보안여부); → true : 적용, false : 미적용

  2. response객체를 이용하여 쿠키를 웹브라우저로 보내면 웹브라우저가 이 쿠키를 받아서 저장한다

    형식) response.addCookie(1번에서 만든 쿠키객체)

    response.addCookie(nameCookie);
    response.addCookie(ageCookie);
    response.addCookie(genderCookie);
    

    Cookie를 읽어오는 방법

    전체 쿠키 정보를 request객체를 통해서 가져온다. → 가져온 쿠키 정보들은 'Cookie[]'형태로 반환된다. 형식) Cookie[] 쿠키배열변수 = request.getCookies();

    Cookie[] cookieArr = request.getCookies();

    Cookie 삭제하기

    실습