セッションはサーバーに保存されるもの、クッキーはブラウザに保存されるものと単純に覚えていたのですが、厳密にはそうではなかったので、両者の関係についてまとめていきます。
1 セッションとは
ユーザーがWebサイトを訪れてから、立ち去るまでの一連のやり取りを管理する「仕組み」のことです。
本来、Web通信(HTTP)は一回ごとに完結してしまい、相手が誰かを忘れてしまう性質を持っています。それを補い、「ログイン中である」といった状態をサーバー側で保持するのがセッションの役割です。
2 クッキーとは
サーバーから渡されるデータを、ユーザーの**ブラウザ側に一時的に保管しておくための「箱」**です。
ここにデータを保存しておくことで、次に同じサイトにアクセスした際、ブラウザが自動的にそのデータをサーバーへ送り返してくれます。
3 セッションID、クッキー、セッションの関係
冒頭でも述べたようにセッション⇒サーバー、クッキー⇒ブラウザという図式は、厳密ではありません。
なぜかというと、セッションがクッキーに依存しているからです。
Step 1. 初回訪問(鍵の発行とメモ帳の作成)
- サーバー: ユーザーが来たら「セッションID(鍵)」を発行し、サーバー内に専用の「セッション(メモ帳)」を作ります。
- ブラウザ: サーバーから送られてきた「セッションID(鍵)」を受け取ります。
Step 2. 保管(箱に入れる)
- ブラウザ: 受け取った「鍵」を、ブラウザ内の「クッキー(箱)」に大切に保管します。
Step 3. 次回アクセス(鍵の提示)
- ブラウザ: 再び同じサイトにアクセスする際、「クッキー(箱)」から「セッションID(鍵)」を取り出してサーバーに見せます。
Step 4. 照合
- サーバー: 提示された鍵と、サーバーにあるメモ帳を照らし合わせます。
上記の結果、鍵からメモ帳を取り出すことで、前回ログイン時の状態(買い物かごの商品など)が維持されたまま、再度ログインできるという仕組みです。
まとめ
| 登場人物 | 役割 | 保存場所 |
|---|---|---|
| セッションID | サーバーのデータを開けるための「鍵」 | クッキーの中(ブラウザ) |
| セッション | ユーザーごとの秘密の「メモ帳」 | サーバー |
| クッキー | データを保存しておくための「箱」 | ブラウザ |