セッションとCookieの違い
セッションとCookieはどちらも「サーバーがユーザを識別するための情報」である。
両者最大の違いとしては、「情報をサーバとユーザどちらが持つか」だ。
・サーバが持つ:セッション
・ユーザ(ブラウザ):Cookie
それぞれのメリット・デメリット・使い時を見ていこう。
セッション
サーバがデータを持つ。
なので、ブラウザの画面を閉じたり、更新しても、データが残り続ける。
また、画面遷移ごとにhiddenで値を持ちまわす必要が無くなる。
サーバ上にデータを持つゆえのデメリットもあり、それがメモリの容量の問題。
なんでもかんでもセッションに保存してしまっては、いずれメモリが枯渇してしまう。
タイムアウトを実装するなどの対策が必要。
また、セッションID自体は結局画面遷移ごとに次の画面へ渡す必要がある。
Cookie
ユーザ(ブラウザ)がデータを持つ。
Httpレスポンスなり、リクエストにSet-Cookieみたいなヘッダーで含まれていて、chromeとかに保存されてる。
その名前で含まれていれば、ブラウザは「あぁ、これはページが切り替わっても持ち続けるCookieなんだな」と認識してくれる。
上記ヘッダーの中にいくつも key=valueの形でデータを持つことが出来る。
注意点として、ブラウザが持っているCookieはユーザの手で削除できる。
なので、このことを考慮して実装を行う必要がある。
セッションとCookieは組み合わせて使う
主な用途として、セッションIDの持ちまわしをCookieで行う。
すると、いちいち画面遷移ごとにhiddenでセッションIDを送る必要がなくなる。