まえがき
クッキーという言葉はプログラミングをしていなくても聞くことが多いと思います。クッキーを削除、クッキーを保存しないなど....。しかしクッキーというものの正体を正確に把握している人は少ないのではないでしょうか。また、クッキーと似たような仕組みでセッションというものがあります。そのクッキーとセッションの違いについて詳しく知りたくなったので調べてみました。
ログイン機能について知る
まずそれらを理解する前にログイン機能を例にして実際にどのようにクッキーやセッションを使っているのかを考えていきます。
webサイトを見る仕組み
普段、httpを使い私たちはネットワークのwebページを見ているわけなのですがそのhttpというものにはサーバーというものとクライアントというものが存在します。
サーバーというものは画面のないパソコンのようなもので常に動いているものという簡単な認識で大丈夫です。
そしてクライアントというのは私たちが今使っているパソコンやスマートフォンなどのことです。
私たちクライアントは何かwebサイトを見たいときにそのサーバーにリクエストというものを送ってサーバーがレスポンスを返してそのレスポンスがwebサイトの画面となって表示されるわけです。
ログイン機能
そしてログインについて考えてみます。
ログインというものはクライアントがサーバーに「ログインしますけどいいですか?」というようなリクエストを送り、サーバーが「ログインしてもいいよ」というようなレスポンスを返すことによって成立します。
httpの性質
しかしhttpというものは状態を保持するという機能を備えていません。
それによりどのような問題が起こるかというとログインしているという状態を継続的に保つことができないというわけです。
ですのでhttp本来の性質の上でwebサイトを見た場合、ページを切り替えるたびにログインすることを求められるのです。
そのような仕様ではログイン機能は使い物にならなくなってしまいます。
そこでその状態を継続的に保てないというような性質を解決するためのものがクッキーやセッションです。
クッキーとは
Cookieとは、Webサイトの提供者が、Webブラウザを通じて訪問者のコンピュータに一時的にデータを書き込んで保存させる仕組みのことです。
噛み砕いて説明します。
先ほど書いたようなログイン状態を保持する状況というものがあったときにその状況をどのように保持するかということですが、このクッキーはその保持した状態をサーバー上に保存しておき、その状態に番号という名前をつけその番号をユーザーに渡します。そうすることでユーザーはそのログインした状態につけた番号を保持した状態なのでユーザーがその番号を持っている限りはログインを保持することができます。そのユーザーとはユーザーのブラウザのことです。(例えばGoogleChromeやInternet Explorerのこと)そしてその、サーバーに情報を保存し、その情報をユーザーに渡す仕組みのことをクッキーと言います。また、ログイン状態をサーバー側に保存することでクライアント側から情報を改変することができないので比較的安心して情報を保持することができます。ちなみにクッキーは有効期限があるので古い情報は消されてしまいます。
セッションとは
セッション とは コンピュータネットワークでは、接続を確立してから切断するまでの一連の通信のこと。 HTTPのサイトでは、セッションにIDを振ることで同一のセッションを管理することができる。 また、一連のインタラクティブな操作(例えばログインしてからログアウトするまで)を指す場合もある。
セッションとはログインしたという状態をサーバーに渡して、そのユーザーがブラウザを閉じるまでログイン状態を保持するというものです。セッションはクッキーとは違いブラウザを閉じたらログインしたという状態を失ってしまいます。そしてクッキーのようにユーザーに渡される情報もないです。一時的にログイン状態を保持という認識で大丈夫だと思います。
クッキーとセッションの大まかな違い
クッキーとセッションの違いは仕組みはもちろんですが、ブラウザを閉じたときにログイン状態を保持できるかどうかだと思います。もちろんログイン機能以外でも用いられる技術ですので、詳しく知っておけば応用を利かせることができるのではないかと思います。
あとがき
以上です。クッキーとセッションの概念的な部分だけ考えてみました。少しでも役に立てましたら嬉しいです。
また、言葉足らずな部分や間違っている部分が多々あるかもしれませんので指摘等がありましたらよろしくお願いします。