쿠키(Cookie)

뫄뫄(ahk)·2022년 9월 20일
0

Spring

목록 보기
11/18
post-thumbnail

쿠키란?

  • 이름과 값의 쌍들으로 구성된 작은 정보
  • 아스키 문자만 가능(한글은 URL인코딩해야)
  • 서버에서 생성 후 전송, 브라우저에 저장. 유효기간 후 자동삭제
  • 서버에 요청시 domain, path가 일치(하면 그 하위 경로까지 쿠키가 간다)하는 경우에만 자동 전송
  • 클라이언트 식별기술 +도서관 갈 때는 도서관 ID카드 가지고 가자

쿠키의 작동 과정

  1. 첫 요청
  2. 서버에서 쿠키 생성 후, 응답 헤더(set-Cookie)에 쿠키를 담아 전송
  3. 브라우저에 저장
  4. 브라우저가 쿠키에 저장된 domain, path가 일치하는 서버에 요청 시 쿠키가 자동으로 따라간다

쿠키의 생성

Cookie cookie = new Cookie("id", "asdf"); //쿠키 생성
cookie.setMaxAge(60*60*24); //유효기간 설정(초)
response.addCookie(cookie); //응답에 쿠키 추가
  • 유효기간은 상대 시간(Max-age)과 절대 시간(Expires)이 같이 간다 브라우저마다 사용하는 시간이 다르고, 시차에 따른 오차나 하드웨어 시간에 오차가 있을 수 있기 때문

쿠키의 삭제, 변경, 읽기

1. 삭제

Cookie cookie = new Cookie("id", ""); 
//변경할 쿠키와 '같은 이름'의 쿠키 생성
cookie. setMaxAge(0); //유효기간을 0으로 설정(삭제)
response.addCookie(cookie); //응답에 쿠키 추가

2. 변경

Cookie cookie = new Cookie("id",""); //변경할 쿠키와 같은 이름의 쿠키 생성
cookie.setValue(URLEncoder.encode("남궁성"); //쿠키 값 변경
cookie.setDomain("www.fastcampus.co.kr"); //쿠키 domain변경
cookie.setPath("/ch2"); //쿠키 path변경
//domain과 path의 기본값은 서버의 응답을 가지고 판단
cookie.setMaxAge(60*60*24*7); //쿠키 유효기간 변경
response.addCookie(cookie); //응답에 쿠키 보내기

3. 쿠키 읽어오기

Cookie[] cookies = request.getCookies(); //없으면 null -> null check!
for(Cookie cookie:cookies){
	String name = cookie.getName();
	String value = cookie.getValue();

	System.out.printf("[cookie]name=%s, value=%s%n", name, value);
}

//요청을 통해 들어온 쿠키를 파라미터에 넣어줄 수도 있다
@PostMapping("/login/login")
public String login(@CookieValue("JSESSIONID") String sessionid, String id){
	...
}
profile
NONONONONONOYes!

0개의 댓글