[Web][JSP] 쿠키

포키·2023년 5월 2일
0

국비과정

목록 보기
56/73

쿠키

클라이언트에 상태 정보 저장
한계가 있음 (브라우저가 쿠키를 저장하지 않을 수 있음 - 쿠키 비허용 옵션)
보조적 수단으로만 활용

  • 서버는 쿠키를 이용해서 브라우저에 정보 전송 가능
  • 브라우저(클라이언트)는 쿠키 저장소에 전달받은 쿠키를 저장
  • 브라우저가 서버에 요청을 날릴 때 가지고 있는 쿠키를 같이 전송
  • 서버와 브라우저는 필요한 값을 공유하고 상태를 유지할 수 있다

쿠키는 서버와 클라이언트 모두 만들 수 있지만, 클라이언트가 만드는 쿠키는 의미가 없다
(∵ 클라이언트는 상태 정의를 하지 않는다)

  • 데이터를 서버가 다 저장하지 않고 브라우저에 저장을 맡긴다는 게 쿠키의 목적
  • 기본적으로 쿠키는 그 쿠키를 생성한 서버에만 전송된다.
  • 쿠키는 헤더에 담기므로 첫 출력 버퍼가 전송되기 전 모두 정해져야 한다

구성

  • 이름 : 식별자
    , ; = (공백) 사용 불가, 보통 알파벳과 숫자만 사용한다
  • 값 : 이름과 관련된 값 (String)
  • 유효시간 : 웹브라우저가 쿠키를 보관하는 시간
  • 도메인 : 쿠키를 전송할 수 있는 도메인 지정
  • 경로 : 쿠키를 전송할 수 있는 경로 지정

생성

  • new Cookie(String name, String value)로 생성 (쿠키 클래스 사용)
  • response.addCookie(쿠키 객체) : 헤더에 담아 브라우저로 쿠키 전송

값 읽기

값 변경 및 삭제

  • 쿠키는 브라우저에 저장되므로 서버에서 직접 제어할 수 없다
  • 변경 방법 : 같은 이름의 쿠키를 보냄
  • 삭제 방법 : 같은 이름이면서 값이 ""인 쿠키를 만들고, 유효시간을 0으로 설정해서 보냄

도메인

  • .도메인 주소 : 점으로 시작하는 경우 관련 도메인(해당 도메인 및 그 상위 도메인)에 모두 쿠키를 전송한다.
  • 도메인 주소 : 일반적인 도메인 주소의 경우 해당 도메인에만 쿠키를 전송한다. (보통 www.로 시작)

    도메인은 현재 서버의 도메인 및 상위 도메인만 지정할 수 있다. (보안문제)

  • 보통 .기본 도메인을 사용한다. (ex. .naver.com)

세션 관리에도 쿠키를 사용한다. - JSessionId

경로

  • 따로 지정하지 않으면 현재 경로로 지정
  • 경로가 지정되면 해당 경로 혹은 그 하위 경로에만 쿠키를 전송한다.
  • 보통 Root 경로를 사용한다. (ex. /)

도메인과 경로는 대부분 가장 넓은 범위로 설정한다
=> .기본주소, /

유효시간

  • setMaxAge() : 초 단위로 유효시간을 지정

    지금까지 일반적으로 시간은 밀리초 단위로 저장되었다.
    지금까지의 시간과 쿠키 유효시간의 차이 : 전자는 1970년 1월 1일부터의 시간을 계산, 후자는 전송받은 시점부터 종료까지의 짧은 시간을 계산

  • 음수로 지정시 브라우저가 종료되면 삭제
    A negative value meansthat the cookie is not stored persistently and will be deletedwhen the Web browser exits.

쿠키와 헤더

  • 쿠키이름=쿠키값; Domain=도메인값; Path=경로값; Expires=GMT형식의만료일시
  • invalid=invalidcookie : 사용 불가 쿠키
  • WAS가 알아서 처리
profile
welcome

0개의 댓글