• 쿠키(Cookie)는 브라우저에 쿠키가 등록 돼 최근 본 페이지나 키워드 등이 저장되서, 쇼핑몰에서는 장바구니, 결제 등에서 사용된다. 그래서 완전 가볍게 쿠키를 정리해봤다.

  • cookie 설정을 어려워 생각할 필요가 없다.
  • cookie 객체를 생성하고 이름, 값, 만료기한만 넣으면 된다.
    너무 어렵게 생각해서 하루만에 끝날 걸 3일이나 끌고 갔다.
  • jsp나 php같은 곳이 아닌, spring은 cookie는 interceptor에서만 적용된다.
    그래서 interceptor가 아닌 service나 다른곳에서 로직을 작성해도 적용되지 않는다.

  • 그리고 jsp에서는 cookie 객체를 통해 생성되지만, spring의 로직에서는 CookieGenerator를 사용해야 한다.
  • 생성
    CookieGenerator cg = new CookieGenerator();
    cg.setCookieName("view");
    cg.setCookieMaxAge(60*60*24);  
    cg.addCookie(response, "value");
    • 객체 생성 후 .set을 입력하면
    • 유효기간, 도메인, 이름, 접속경로, 보안, HttpOnly 설정이 있다.

      • MaxAge : (현재 시간 기준) 쿠키를 유지할 만료기한
      • Domain : 쿠키가 어떤 서버로 전송 되어야하는 지 설정
      • Name : 쿠키의 key값으로 사용될 이름
      • Path : 웹서버의 특정 URL에 대해서만 쿠키를 전송 가능
      • Secure : 웹브라우저와 웹서버가 HTTPS로 통신하는 경우에만 웹브라우저가 쿠키를 서버로 전송하는 옵션
      • HttpOnly : 자바스크립트 document.cookie를 이용해서 쿠키에 접속하는 것을 막는 옵션. 쿠키 조작 방지
  • 쿠키 값 가져와서 해당 값 수정 & 삭제
//쿠키값 가져오기
Cookie[] cookies = request.getCookies();
     // 쿠키값 중에서 원하는 쿠키로 설정 
	for(Cookie cookie : cookies) {                // 찾는 쿠키 발견시 수정  
		if(cookie.getName().equals("name")) { 
                        // 쿠키 설정하는 것과 같이 원하는 값을 넣으면 변경!
			cg.setCookieName("name2");    // cookie 이름 
 			cg.setCookieMaxAge(0);        // cookie 즉시종료
			cg.addCookie(response, null); // cookie 값 null 
		}
	}
  • MaxAge
    • -1 : 세션이 끝나면 삭제 즉, 브라우저 종료 시 쿠키 삭제 (session)
    • 0 : 즉시 종료
    • 초 단위 : (초 * 분 * 시 * 일 )
      • 60 * 60 * 24 : 24시간
      • 60 * 60 * 10 : 10 시간
      • 60 * 60 *24 * 30 : 한 달
      • 60 * 60 *24 * 365 : 일년
  • 만약 CookieGenerator를 사용해서 만드는게 아니라 Cookie를 사용하여 수정할 때는, value의 값을 setValue(null)로 만든 후 setValue("수정값")으로 넣어야한다.
    왜냐하면 기존의 value는 4byte의 값인데 다른 값으로 변경하면 겹쳐서 값이 들어가기 때문에 중복으로 오류가 날 수도 있다. 그래서 먼저 null로 만든 후 값을 넣어줘야한다.
profile
까먹지말자

0개의 댓글