HTTP Cookie (쿠키)


Cookie(쿠키)는 다음과 같은 기능을 만들기 위해 사용한다.

  • 방문자가 그 페이지에 몇 번 방문했는지 기록해 표시한다.
  • 웹서비스에서 방문자의 최근에 방문한 페이지를 기록해 두고, 다음 번 방문시에 그 해당 페이지를 보여주기 위한 용도로 사용한다.
  • 게시판이나 채팅으로 입력한 사용자명을 기록해 두고, 다음 번 방문시에 사용자명의 입력을 생략한다.
  • 로그인으로 세션을 유지한다.

아래의 사양서가 공개되어 있다.

위와 같은 데이터는 CGI 등을 이용하여 서버 측에 기록하기 도 하지만, 쿠키를 이용함으로써 클라이언트측(브라우저를 기동하는 측)의 하드 디스크에 쿠키 정보 데이터를 기록을 하기도 한다.

쿠키 정보가 저장되는 파일은 OS나 브라우저의 버전에 따라 다르다.

예를 들면, Windows와 같은 경우는 다음과 같은 폴더나 파일에 기록된다.

- C:\Document and Settings\(UserName)\Cookies
- C:\Program Files\Netscape\Users\(UserName]\cookies.txt
- C:\Program Files\Netscape\Navigator\cookies.txt
- C:\Windows\Cookies\~.txt

Mac OS에 Chrome인 경우에는 아래 저장된다.

- ~/Library/Application Support/Google/Chrome/Default/Cookies

JavaScript를 사용하여 쿠키를 설정할 때는 다음을 수행한다.

자바스크립트

document.cookie = "~";

HTML로 지정하려면 다음을 수행한다. 이 방법은 추천하지 않는 방식이다.

HTML

<meta http-equiv="Set-Cookie" content="~">

~ 부분에는 다음과 같은 문자열을 지정한다.

형식

NAME=값; expires=값; domain=값; path=값; secure

NAME=값; 이외는 선택 사항이다. 각각 다음과 같은 의미가 있다.

매개변수 의미
NAME=값 원하는 이름에 원하는 값을 지정한다. 세미콜론(;), 쉼표(,), 공백 문자( ) 또는 한글을 사용할 때는 각각 어떤 형식으로 인코딩해야 한다. 인코딩에는 %3B, %2C, %20 등의 URL 형식의 인코딩이 자주 사용된다.
expires=값 클라이언트 측에 기록되는 쿠키의 만료일을 Thu, 1-Jan-2030 00:00:00 GMT와 같은 형식으로 지정한다. 표준 시간대는 항상 GMT로 지정된다. 생략하면 브라우저를 종료 할 때까지 만료된다. 과거 값을 지정하면 쿠키가 삭제된다.
domain=값 쿠키를 게시할 웹 서버의 이름을 지정한다. 생략하면 웹서버 이름(예 : www.devkuma.com)으로 된다.
path=값 여기에서 지정한 경로 이름과 일치하는 페이지를 탐색할 때 브라우저는 저장된 쿠키 정보를 서버로 보낸다. 예를 들어, path=/docs를 지정하면 /docs와 일치하는 모든 페이지에 쿠키 정보가 전송된다. 기본적으로 쿠키가 설정된 페이지의 경로 이름 부분이다.
secure 이 변수를 넣으면, 서버와의 연결이 안전한 경우에만 쿠키 정보가 전송된다.

가장 간단한 쓰기의 예는 다음과 같다. 이것은 브라우저가 끝날 때까지 유효하며, 설정한 페이지와 같은 폴더에 있는(혹은 하위층에 있는) 페이지에 송신된다. HTTP Header

Set-Cookie: NAME=devkuma;

만료일을 지정은 다음과 같이 한다. 브라우저를 종료하든 OS를 다시 시작하든, 만료일까지 디스크에 계속 저장된다. HTTP Header

Set-Cookie: NAME=devkuma; Tue, 31-Dec-2030 23:59:59;

JavaScript를 사용하여 쿠키 값을 읽으려면 document.cookie 값을 참조한다. 값에 대한 설명은 위를 참조하길 바란다.

자바스크립트

alert(document.cookie);