BACK-END/JSP

[JSP] cookie

이리53 2022. 3. 24. 17:37

Cookie

 

쿠키란 무엇인가?

서버에서 사용자의 컴퓨터에 저장하는 정보 파일

사용자의 별도 요청 없이도 브라우저는 request시 Request Header를 넣어 자동으로 서버에 전송

key, value 쌍으로 구성, String Type

브라우저마다 저장되는 쿠키가 다르다(서버서는 브라우저가 다르면 다른 사용자로 인식)

크롬에서 네이버 자동로그인 설정을 해 놓는다고, 엣지에서 네이버 자동로그인이 되어져 있진 않다.

 

사용 목적

세션관리
- 사용자의 아이디, 접속시간, 장부구니 등 서버가 알아야 할 정보 저장

개인화
- 사용자에게 최적화된 페이지 제공

트래킹
- 사용자 행동, 패턴 분석

 

구성요소

이름
- 쿠키는 여러 개 저장될 수 있음. 각 쿠키를 구별하는데 이름이 사용 됨.


- 쿠키의 이름과 쌍을 이루는 매핑 값

유효기간
- 쿠키의 유효기간. 기간 만료 후, 더 이상 유효하지 않게 됨.

도메인
- 쿠키를 전송할 도메인

경로
- 쿠키를 전송할 요청 경로

 

동작 순서

1.  client가 페이지 요청

2. WAS(Web Application Server)가 cookie 생성

3. HTTP Header에 Cookie 넣어 response

4. 브라우저는 넘겨받은 cookie를 로컬 PC 메모리에 저장하고, 다시 WAS가 요청 시 요청과 함께 cookie 전송

5. 브라우저가 종료되어도 cookie 만료기간이 남아있다면 client는 cookie를 계속 보관

6. 동일 사이트 재방문 시 client의 pc에 해당 cookie가 있는 경우, 요청 페이지와 함께 cookie 전송

 

특징

이름, 값, 만료일, 경로 정보로 구성

client에 총 300개의 cookie 저장 가능

하나의 도메인 당 20개의 쿠키를 가질 수 있다.

한 cookie의 최대 크키는 4KB(=4096byte)

 

 

생성

Cookie cookie = new Cookie("loginid", id);
cookie.setMaxAge(60*60*24);
cookie.setPath(request.getContextPath());

 

삭제

Cookie[] cookies = request.getCookies();
if(cookies != null) {
    for(int i=0; i<cookies.length; i++) {
        if(cookies[i].getName().equals("loginid")) {
            cookies[i].setMaxAge(0);

            // 브라우저한테 알려주기
            response.addCookie(cookies[i]); 
            break;
        }
    }
}
  • 중요한 것은 cookie 삭제 시, 반드시 변경 내용을 브라우저에게 알려 주어야 한다.
  • 알려주지 않는다면, 브라우저 상의 cookie는 삭제되지 않고 여전히 존재하게 된다.