FIG-030

Cookieとセッション — サーバーはどうやって「あなた」を覚えるか

Web 2026.06.18 公開 読了 約10分

HTTPは、1回のやりとりが終わると相手をきれいさっぱり忘れるステートレス(状態を持たない)な仕組みです。だからログインした次の瞬間、ふつうにリクエストを送ると、サーバーは「あなた、誰でしたっけ?」となります。では、なぜ実際のサイトはログイン状態を覚えていられるのか —— その正体がCookieとセッションです。

仕組みはシンプル。ログインするとサーバーは整理番号(セッションID)を発行し、Set-Cookieでブラウザに渡します。ブラウザは以後のリクエストに毎回その番号を添えて送り、サーバーは手元の台帳と照合して「ああ、田中さんですね」と思い出す。下の図1で、ログインしてからリクエストを送ってみてください。Cookieを添える/外すで、覚えてもらえるかどうかが切り替わります。

🧑‍💻
ブラウザあなた
🍪 Cookie保管庫
要求
応答
🖥️
サーバーServer
📒 セッション台帳
(記憶なし)
「ログイン」してから「マイページを見る」を押すと、サーバーの返事が変わります。
図1 — サーバーは「整理番号(セッションID)」と台帳で、あなたを思い出す

覚えているのはブラウザではなく、サーバーの台帳

勘違いしやすいのですが、Cookieに入っているのは整理番号だけで、「田中」という中身そのものではありません。本人情報はサーバーのセッション台帳に保管され、Cookieはそれを引き当てる引換券にすぎません。だから図1でサーバーでログアウトすると、ブラウザに券(Cookie)が残っていても、台帳から消えているので「無効な番号」として扱われます。

逆にCookieを削除すれば、券を自分で捨てたのと同じ。台帳には残っていても、もう番号を提示できないので名乗れません。そして「Cookieを添付する」を外して送ると、毎回はじめましての他人として扱われる —— これがステートレスの素の姿です。この引換券が漏れると他人になりすまされるため、本物のサイトでは推測されにくい長い番号を使い、HttpOnlyなどでCookieを守ります。

用語ミニ辞書
ステートレス
HTTPは1回ごとに完結し、前回の相手を覚えていない。だから印が要る。
セッションID
サーバーが発行する整理番号。中身ではなく、台帳を引くための鍵。
Set-Cookie / Cookie
サーバーが番号を渡すヘッダーと、ブラウザが毎回それを返すヘッダー。
セッション台帳
番号と本人情報の対応表。本体はサーバー側にある。

まとめ

Cookieとセッションは、「忘れっぽいHTTPに記憶を持たせる」ための定番の合わせ技です。サーバーが整理番号を発行し(Set-Cookie)、ブラウザが毎回それを提示し(Cookie)、サーバーが台帳で本人を引き当てる。覚えているのはサーバーの台帳、Cookieはただの引換券 —— この役割分担が腑に落ちれば、ログインの裏側でいつも起きていることが見えてきます。