クッキーとセッションの違いとは?
突然ですが僕はクッキーとセッションの違いがわからない。一般にクッキーはブラウザ側でデータを保持し、セッションはサーバ側でデータを保持するものとされています。なのでブラウザの開発ツールを開くとクッキーの情報は確認できますがセッションの情報はブラウザでは確認できな……。
ん、セッションストレージ?なんだコイツは……!!
はい、これです。
Window.sessionStorage - Web API | MDN
HTML5になってWeb Storageというローカル環境にミニマルなDBっぽいものを作れる仕組みができました。なのでこちらのやつはWeb Storageの機能の一つを指します。クッキーなどの細かい違いは多分こちらを参照すればよいかと思います。
Web Storage-HTML5のAPI、および、関連仕様
しかし、こういったものに "セッション" という言葉を使うとなると先ほどの認識を改めなくてはいけなくなってしまいました。ということで定義から振り返ってみます。
セッションとは、活動期間、学期、会期、開催期間、集会などの意味を持つ英単語。コンピュータシステムやネットワーク通信において、接続/ログインしてから、切断/ログオフするまでの、一連の操作や通信のこと。
てなわけで、一連の処理の始まりから終わりまでを表す操作のことを "セッション" って言うそうですね。なるほど、また一つ賢くなってしまいました。ということでして、セッションという言葉そのものにサーバーに保持するなんて意味はなかったのです。
さて、"セッション" がやり取りのことを示しているのに、なんで僕はデータを保持する仕組みの認識でいるのだろうか……。おそらく僕はここの一連の流れをひっくるめてセッションと認識しているからのような気がする。
https://www.php.net/manual/ja/session.examples.basic.php
実際にコードに書いて使うときもやりとりのことよりもデータそのものを指して使うことが多いからこんな認識になってしまったのだと思う。
そう、僕はクッキーとセッションを全然理解していなかったのだ……。
おわり
関係ないけどこの手の話なんてタグつけて分けていけばいいかわからない…………。とりあえずプロトコルって付けてるけどなんてタグ付けするといい感じになるんですかね?
余談
ちなみにクッキーの方にもセッションクッキーなんて概念があります。
参考
IBM Knowledge Center
あと、クッキーってこんなやつです。
Cookieとは、Webサイトの提供者が、Webブラウザを通じて訪問者のコンピュータに一時的にデータを書き込んで保存させる仕組み。