こんぶにのブログ

エンジニアという職業を通して学んだことを発信するブログです。

セッション、Cookie の違い

セッションとCookieの違い

セッションとCookieはどちらも「サーバーがユーザを識別するための情報」である。
両者最大の違いとしては、「情報をサーバとユーザどちらが持つか」だ。
・サーバが持つ:セッション
・ユーザ(ブラウザ):Cookie
それぞれのメリット・デメリット・使い時を見ていこう。

セッション

サーバがデータを持つ。
なので、ブラウザの画面を閉じたり、更新しても、データが残り続ける。
また、画面遷移ごとにhiddenで値を持ちまわす必要が無くなる。
サーバ上にデータを持つゆえのデメリットもあり、それがメモリの容量の問題。
なんでもかんでもセッションに保存してしまっては、いずれメモリが枯渇してしまう。
タイムアウトを実装するなどの対策が必要。
また、セッションID自体は結局画面遷移ごとに次の画面へ渡す必要がある。

ユーザ(ブラウザ)がデータを持つ。
Httpレスポンスなり、リクエストにSet-Cookieみたいなヘッダーで含まれていて、chromeとかに保存されてる。 その名前で含まれていれば、ブラウザは「あぁ、これはページが切り替わっても持ち続けるCookieなんだな」と認識してくれる。
上記ヘッダーの中にいくつも key=valueの形でデータを持つことが出来る。
注意点として、ブラウザが持っているCookieはユーザの手で削除できる。
なので、このことを考慮して実装を行う必要がある。

セッションとCookieは組み合わせて使う

主な用途として、セッションIDの持ちまわしをCookieで行う。
すると、いちいち画面遷移ごとにhiddenでセッションIDを送る必要がなくなる。