CookieはWebサーバーがパソコンやスマートフォンなどのWebブラウザーに情報を書き込む仕組みである。書き込んだ情報そのものもCookieと呼ぶ。主にWebブラウザーとWebサーバーの間で通信状態(セッション)を維持するために使われる。
Cookieの役割は、EC(電子商取引)サイトのカートをイメージすると理解しやすい。買い物の途中で他の商品を見たり、別のWebサイトを閲覧したりしても、カートに戻れば中身が残っている。Cookieが買い物に関する一連の行動であると識別できるようにしているからだ(PICT1)。
Cookieは同じドメインの複数のサーバーで共有できる。多数のユーザー向けにサービスを提供する場合、複数のWebサーバーを使ってWebサイトを構成する。同じドメインのWebサーバーはWebブラウザーからCookieを受け取れるので、負荷分散で接続するWebサーバーが切り替わっても、ユーザーは元のWebサーバーで見ていたページの続きから閲覧できる。
HTTPの機能を補う
Webの通信プロトコルであるHTTP(HyperText Transfer Protocol)はステートレスである。つまりWebブラウザーとWebサーバーでやりとりされる要求とその応答(リクエストーレスポンス)は、それぞれ独立したものとして扱われる。例えばリクエストの順序や、別のリクエストーレスポンスで発生した状態の変化などはHTTPだけでは分からない。
そこで導入されたのがCookieだ。Webサーバーがレスポンスを返す際、WebブラウザーにCookieとして保存する名前と値のペアを送る。Webブラウザーは同じドメインのWebサーバーにリクエストをするとき、その名前と値のペアをWebサーバーに送る。例えば「セッションID」という名前に対応する値が同一であれば、一連のセッションであると識別できる。
Cookieの設定方法は大きく2つある。HTTPを使う方法とJavaScriptを使う方法だ。HTTPではヘッダーでCookieを設定する。TLSで通信したときにだけCookieを渡す設定や、JavaScriptで操作できなくする設定も可能だ。