HTTP Cookie (クッキー)

概要

Cookie(クッキー)は次のような機能を作るために使用する。

  • 訪問者がそのページに何回訪問したかを記録して表示する。
  • Web サービスで訪問者が最近訪問したページを記録し、次回訪問時にそのページを表示する。
  • 掲示板やチャットで入力したユーザー名を記録し、次回訪問時にユーザー名の入力を省略する。
  • ログインでセッションを維持する。

以下の仕様書が公開されている。

このようなデータは CGI などを利用してサーバー側に記録することもあるが、Cookie を利用することでクライアント側、つまりブラウザーを起動する側のハードディスクに Cookie 情報データを記録することもある。

Cookie 情報が保存されるファイルは 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

macOS の Chrome の場合は以下に保存される。

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

JavaScript を使用して Cookie を設定するときは次のようにする。

document.cookie = "~";

HTML で指定する場合は次のようにする。この方法は推奨されない。

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

~ 部分には次の形式の文字列を指定する。

NAME=値; expires=値; domain=値; path=値; secure

NAME=値; 以外は任意である。

パラメーター 意味
NAME=値 任意の名前に任意の値を指定する。セミコロン、カンマ、空白文字、日本語や韓国語などを使う場合は適切な形式でエンコードする。
expires=値 クライアント側に記録される Cookie の有効期限を Thu, 1-Jan-2030 00:00:00 GMT のような形式で指定する。省略するとブラウザー終了時まで有効である。
domain=値 Cookie を発行する Web サーバー名を指定する。
path=値 ここで指定したパス名と一致するページを閲覧するとき、ブラウザーは保存された Cookie 情報をサーバーへ送る。
secure この変数を入れると、サーバーとの接続が安全な場合にだけ Cookie 情報が送信される。

最も簡単な書き込み例は次のとおりである。

Set-Cookie: NAME=devkuma;

有効期限を指定する場合は次のようにする。

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

JavaScript を使用して Cookie 値を読むには、document.cookie の値を参照する。

alert(document.cookie);