セッションとCookieの仕組みをわかりやすく解説

まずは、これだけ

Cookieはブラウザが持つ小さな札。セッションはサーバーが持つログイン状態の記録です。
ログイン後に何度ページを開いても毎回パスワードを聞かれないのは、この2つが組み合わさっているためです。

ブラウザがCookieを保存し、サーバーがセッション情報を保存してログイン状態を判断する全体像
Cookie:ブラウザが持つ識別用の札 セッション:サーバーが持つログイン状態

Cookieはブラウザに置かれる小さなデータ

Cookieは、Webサイトがブラウザに保存させる小さなデータです。ログイン状態を扱う場面では、セッションIDのような識別用の文字列がCookieに入ることがあります。

大事なのは、Cookieはブラウザ側に保存され、同じサイトへアクセスするときに自動で送られるという点です。会員証を財布に入れておき、お店に行くたびに見せるイメージです。

置き場所

利用者のブラウザに保存される。

よく入るもの

セッションID、表示設定、同意状態など。

特徴

同じサイトへのリクエスト時に自動で送られる。

セッションはサーバー側のログイン記録

セッションは、サーバー側で「この人はログイン済み」「このユーザーIDとして扱う」といった状態を覚える仕組みです。ユーザー情報そのものを毎回ブラウザへ持たせるのではなく、サーバー側で管理します。

ブラウザからCookieに入ったセッションIDが送られてくると、サーバーはそのIDに対応するセッションを探します。見つかれば、ログイン済みとして画面を返せます。

Cookieはブラウザに保存される小さなデータ、セッションはサーバーに保存される状態情報として比較した図
Cookieはブラウザ側の識別用データ、セッションはサーバー側の状態情報として考えると整理しやすくなります。
置き場所

サービスのサーバー側で管理される。

よく持つもの

ログイン中のユーザーID、期限、権限に関わる情報。

特徴

期限切れやログアウトで無効になる。

ログイン後に会員証を受け取る

ログインに成功すると、サーバーはセッションを作り、そのセッションを見つけるためのIDをブラウザへ渡します。ブラウザはそのIDをCookieとして保存します。

次にマイページなどを開くと、ブラウザはCookieを自動で送ります。サーバーはCookieの中のIDを見て、対応するセッションを探し、「この人はログイン済み」と判断します。

ログイン成功後にサーバーがセッションを作り、ブラウザがCookieを保存して次回アクセス時に自動送信する流れ
最初のログインでCookieを受け取り、次回以降はそのCookieを手がかりにサーバー側のセッションを確認します。
1 ログイン IDとパスワードなどを送る
2 セッション作成 サーバーがログイン状態を保存する
3 Cookie保存 ブラウザがセッションIDを持つ
4 次回アクセス Cookieが自動で送られる
5 状態確認 サーバーがログイン済みと判断する

ログアウトは会員証を使えなくすること

ログアウトすると、多くの場合はサーバー側のセッションを削除したり、ブラウザ側のCookieを消したりします。どちらかだけではなく、両方をそろえて扱うことで、次のアクセスでログイン済みと判断されないようにします。

また、一定時間操作がないと自動でログアウトされるサービスがあります。これは、セッションに期限を設けて、古いログイン状態を使い続けられないようにするためです。

ログアウト

セッションを削除し、Cookieも使えない状態にする。

期限切れ

長く使われていないログイン状態を無効にする。

再ログイン

新しいセッションとCookieを作り直す。

Cookieに何でも入れるわけではない

Cookieはブラウザに保存されるため、ユーザー名や権限情報などをそのまま詰め込む設計には注意が必要です。特にログイン状態に関わる情報は、サーバー側のセッションで管理し、Cookieには識別用のIDだけを入れる形がよく使われます。

実際のサービスでは、Cookieに HttpOnlySecure などの設定を付け、安全に扱えるようにします。細かな実装はサービスごとに異なりますが、「Cookieは持ち歩く札、セッションはサーバー側の記録」と覚えると入口として十分です。

入れすぎない

重要な情報をCookieへそのまま持たせない。

設定を付ける

JavaScriptから読めない、HTTPSだけで送るなどの指定がある。

サーバーで確認

CookieのIDを手がかりに、実際の状態はサーバーで見る。

ここまでのまとめ

Cookieはブラウザに保存される小さなデータで、セッションはサーバー側でログイン状態を覚える仕組みです。ログイン後は、Cookieに入ったIDを手がかりに、サーバー上のセッションを探します。

Cookieは「会員証の番号」、セッションは「お店側の会員情報」。2つを組み合わせることで、ログイン状態を保てます。