あけおスクールに多額のお金を支払う前に、僕の記事で学習してね!
はじめに
Webアプリを使っていると、
- ログインできる
- ページを移動してもログイン状態が続く
これは当たり前のように感じますが、
実は HTTPの仕組みだけでは実現できません。
なぜなら、
HTTPはステートレス(状態を覚えない)
からです。
では、
Webアプリはどうやって
ログイン状態を維持しているのか?
その答えが
CookieとSession です。
この記事では、
- なぜCookieとSessionが必要なのか
- それぞれ何をしているのか
- Webエンジニアはどこまで理解すればいいのか
を、初心者向けに順番で解説します。
HTTPはステートレスだった
まず前提の確認です。
HTTPは、
- 前回の通信を覚えない
- 毎回独立した通信
という性質を持っています。
つまり、
「この人はさっきログインした人だ」
という記憶がHTTPにはない
ということです。
ステートレスのままだと何が困る?
もしHTTPだけなら、
- ページを移動するたびにログイン要求
- カート情報が消える
- ユーザー識別ができない
という
使い物にならないWebになります。
そこで登場するCookieとSession
この問題を解決するために使われるのが、
- Cookie
- Session
です。
Cookieとは何か?
Cookieとは一言でいうと、
ブラウザに保存される小さなデータ
です。
Cookieは、
- ブラウザ側(クライアント)
- 各ドメインごと
に保存されます。
Cookieには何が入っている?
代表的な内容は、
- セッションID
- ログイン状態の識別子
- 設定情報
👉
重要なデータそのものは入れません。
Sessionとは何か?
Sessionとは、
サーバー側で管理されるユーザーの状態情報
です。
- 誰がログインしているか
- どんな権限を持っているか
といった情報を
サーバー側で保持します。
CookieとSessionの関係
ここが一番大事です。
CookieとSessionはセットで使われる
流れはこうです。
- ユーザーがログイン
- サーバーがSessionを作成
- SessionIDをCookieに保存
- 次回以降のリクエストでCookie送信
- サーバーがSessionを特定
👉
Cookieは「名札」
Sessionは「名簿」
というイメージです。
なぜSessionIDだけをCookieに入れるのか?
理由は
セキュリティです。
- 個人情報を直接Cookieに入れない
- 盗まれても被害を最小限にする
👉
重要情報は必ずサーバー側に置く
これが基本原則です。
Cookieだけではダメなのか?
技術的には
Cookieだけでも実装できますが、
- 改ざんリスク
- 情報漏洩リスク
が高くなります。
そのため、
実務では
Cookie+Sessionが基本
です。
Sessionはどこに保存されている?
Sessionは
環境によって保存先が変わります。
- メモリ
- ファイル
- データベース
- Redis(キャッシュ)
Laravelでは
設定で切り替えられます。
ログアウトすると何が起きる?
ログアウト時には、
- Sessionを破棄
- Cookieを無効化
します。
これにより、
ログイン状態が完全に消える
仕組みです。
Cookieには有効期限がある
Cookieには、
- 有効期限
- セッションCookie
があります。
- ブラウザを閉じると消える
- 一定期間残る
👉
「ログイン保持」機能は
ここに関係します。
セキュリティ上の注意点(概要)
CookieとSessionを使う際は、
- HTTPS必須
- HttpOnly属性
- Secure属性
などが重要です。
👉
詳細は
セキュリティ章で扱います。
Laravelではどう扱われている?
Laravelでは、
- 認証機能
- Session管理
- Cookie操作
が
フレームワークで隠蔽されています。
だからこそ、
仕組みを知っておくことが大事
です。
Webエンジニアはどこまで理解すればいい?
結論です。
以下が説明できれば十分です。
- HTTPはステートレス
- Cookieはブラウザ側
- Sessionはサーバー側
- SessionIDでひも付ける
これが言えれば、
面接でも実務でも困りません。
CookieとSessionが分かると何が良くなる?
- ログイン処理が怖くなくなる
- 認証エラーの原因が分かる
- LaravelのAuthが理解しやすくなる
👉
Webアプリの核心が見えます。
次に学ぶべきこと
CookieとSessionが理解できたら、
次は👇です。
👉 Webで使われるデータ形式とは何か?
HTML・CSS・JSONの役割を整理する


まとめ
- HTTPはステートレス
- CookieとSessionで状態を管理
- Cookieは名札、Sessionは名簿
- ログインの正体が分かる
この記事は
Webアプリ理解の分水嶺です。



あなたの挑戦を応援しています!!



