Webサーバがクライアント(ユーザエージェント。Webブラウザなど)に送信してくるデータのこと。
次回、このクライアントがそのサーバにアクセスした時にその情報を送信することによって、サーバがそのクライアントを識別し、継続的な処理を行なうことができる。
WWWデータの送信に用いられるHTTPは、クライアントからの1回のリクエストに対して1つのファイルを送信するという1往復で完結する仕組みになっている。ある時にアクセスして来たクライアントが、直前にアクセスして来たクライアントと同じものか違うものか、判別する機能をプロトコルとして持っていない。
多くの場合にはこれでも良いが、金銭や個人情報などを扱う場合には、正しいパスワードを入力したクライアントと現在アクセスしているクライアントとが同じものかどうか識別できなければならない。また、以前アクセスしてきたクライアントと同じものであることをサーバが認知できるなら、例えば掲示板のハンドル名欄に最初から前回入力された名前を表示するとか、ショッピングサイトで購入履歴からその顧客の好みそうな物を表示するなど、利便性を向上させることも出来るだろう。
Cookieを用いると、一度そのWebページから離れていっても、再びアクセスした際にサーバに受け取ったCookieを送り返すことで、再び以前の続きなどを行なうことができる。
プライバシー的な問題もあり、サーバ側に情報が送られるのが嫌だという場合には、WebブラウザのCookieの要求を無視する設定も可能である。但しこの場合は情報の保存機能も利用できなくなる。ログインを要求するサイトの場合、ログインできなくなる恐れもある。
具体的には、「Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure」のような書式でサーバからクライアントにCookieは送信される。
一度のHTTPアクセスで複数のSet-Cookieを送ることができる。
NAMEやdomain、path属性をキーとし、重複するものは上書きされ、さもなくば保存される。一つのdomain/pathあたり複数のNAMEで情報を保存させることも可能。例えばWeb掲示板なら、利用者の名前やメールアドレスなどを保管する等が考えられる。
うち必須項目はNAMEのみで、残りはオプションである。
Cookieの名前を示す必須の項目である。原則として英数文字を使用する。セミコロンやカンマ、空白文字、日本語文字などを使用する場合は、%を使ってエスケープしなければならない。
NAME属性の引数はOPAQUE_STRINGと呼ばれ、受信したものを後にサーバに送り返すのは、この内容である。
Cookieの有効期限(クッキーなので賞味期限と言うべきか)を示す。書式は電子メールのRFC 2822等と同等だとされている。
曜日, DD-Mon-YYYY HH:MM:SS タイムゾーン
規格上、タイムゾーンをどう表現するかは明確ではないが、RFC 822(現RFC 2822)と同等と明記されているため、次のように実装するのが一般的。
タイムゾーンは3ないし4桁で、-9999〜+9999。UTCより進んでいれば(日本、オーストラリア等)+、遅れていれば(アメリカなど)-とし、その後に数字4桁(上2桁は時間、下2桁は分)。例えば日本は+0900。UTC(GMT)は+0000で表わす(-0000ではない)。また、タイムゾーンの名称(GMTなど)でも良い。
Cookieを発行したサーバのドメイン名。クライアントは、今アクセスしようとしているドメインに関するCookieを持っている場合にそれをサーバに送出するが、これを検索する際にdomain属性を検索キーに用いる。比較基準は部分一致対応で、後方一致である。
つまりdomain=wdic.orgであれば、www.wdic.orgというドメインと一致すると判断される。
Cookieを発行したURLのうちドメイン名を除いたもの。先のdomain属性と共にURLを作ることができる。
比較基準は部分一致対応で、前方一致である。
pathは/から始める。最も単純なものは「path=/」である。
この属性がある場合は、そのCookieはHTTPSなど安全な経路においてのみ送信されることを示す。
ユーザエージェント(クライアント)はHTTPサーバ接続の際、自己が保持する全てのCookieからアクセス先ドメインに関連するものを検索し、該当するものを1行にまとめてHTTPヘッダとして送信する。
具体的には「Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2; …」のような書式でクライアントからサーバにCookieは送信される。
Windows 9x系でIE4以降では "C:\WINDOWS\Temporary Internet Files" に "Cookie:username@url" という名のテクストファイルとして保存される。
Windows 2000なら "C:\Documents and Settings\username\Cookies" フォルダに "username@url.txt" と名前の付いたテクストファイルとして保存される。一つにつき1ファイルとなるので、読むのも書き換えるのも削除するのも容易という利点がある。
Netscape Navigatorの場合には "C:\Program Files\Netscape\Users\default\cookies.txt" などのファイル(任意変更可)に1行1url形式で格納される。この形式は無駄にファイルが増えないという利点があるが、所定のURLのみの削除が難しく、また読みづらいという問題点がある。但し、通常は人間が読み書きするものではない。
Internet Explorerの場合、ツール→インターネットオプション→Cookieの削除ボタン、である。
Mozilla Firefoxの場合、ツール→オプション→プライバシータブ→Cookieを表示ボタン→すべてのCookieを削除ボタン、である。
Operaの場合、ツール→設定→詳細設定タブ→Cookie→Cookie設定→削除ボタン、である。