結論
結論から話しますが、セッション管理の手段としてのcookieって感じです。
よくわからないと思うので、次からの解説を読んでください。
注意
あくまで、意味を大雑把に理解するのが目的なので結構、抽象的に書いてます。正確性に欠けてます。
正確性を目的としている方は他を参考にしてください。
セッションとは?
そもそもセッションっていうのは何なんでしょう?
webサーバは、基本的に忘れっぽいんです。
誰かがサーバーを訪れました、次の瞬間には訪れた人のことを忘れます。
この忘れっぽさのことを専門的にはステートレスな通信とか言います。
(まぁ正確に言えばちょっと違うけど、、、)
でもそれじゃぁ困るときありますよね!?
例えば、Amazonで買い物をしたとき、
買い物かごに商品を入れました。次にページに遷移したら買い物かごの商品が分からなくなった。
こんなことあっていい訳ない。
サーバーはすぐ忘れるから、買い物かごに商品を入れた!っていう処理をした次の瞬間には、誰の買い物かごに入れた処理だったのかわかんなくなってしまうんですね。
(まぁここも正確に言えばちょっと違うけどニュアンスこんな感じね、、、)
そんなこんなでこれを防ぐ仕組みとして、セッションIDってのがあるんです。
セッションIDを一言で言うならば整理券(メモ)配布作戦のこと
どういうことか、今の例を参考にするなら、
誰かが買い物かごに商品を入れました。入れた瞬間にwebサーバーは商品を入れたっていう処理と同時に、あなたは、何番の人ですっていうメモ的なものっていう情報をブラウザ側に渡します。
そしてその情報を次にサーバーに通信するときに渡せば、サーバー側は、「あなたは何番の人だね!そういえば、カートに商品入れてたよね!!」って番号をもとに前まで行っていた処理を思い出すことができます。
なんて画期的な方法でしょう!
よく言われる、仕事内容忘れるからメモしておけっていうのをそのままサーバーもやってるっていう話です。
この時の整理券(メモ)的なのでやり取りする管理をセッション管理といいます。
cookieとは?
さぁここで疑問に思った人もいるんじゃないでしょうか?
【誰かが買い物かごに商品を入れました。入れた瞬間にwebサーバーは商品を入れたっていう処理と同時に、あなたは、何番の人ですメモ的なものっていう情報をブラウザ側に渡します。】
この部分、 「ブラウザ側に渡しますってどう渡すの?」 と、疑問に思った人は天才です。
ここで出てくるのがcookieです。
メモ的なものをブラウザで保存します。
その方法の一つにcookieがあります。
cookieを一言でいえば、ユーザーの情報だったりあれやこれらをブラウザに保存しておく仕組みです。
保存している情報は様々です。
ログイン情報や場合によっては個人情報なんかも保存されます。
そこでピンときませんか?
【そんないろんな情報を格納するなら、ここにさっきの整理券(メモ)みたいなのも保存しておけばいいじゃんと。】
そうなんです。それを実現するのがSession Cookieというやつなんです。
cookieについて少し深堀たいんですが、cookieは主に2種類分けられます。
Persistent CookieとSession Cookieです。
Persistent Cookieっていうは、我々が普段から想像するであろう、cookieの印象に近いcookieです。ログイン情報の保存や永続的なデータの保存がされます。
そしてもう一つが、今話題に上がってるSession Cookieです。
(英語嫌なので以下セッションcookieって言います)
もうお気づきでしょう。セッションはセッションcookieに保存されます。これは我々が想像する印象に近いcookieとは種類の違うcookieです。セッションcookieは一時的なcookieっていうイメージです。イメージですというかそういうものです。
そこにメモを保存して次にサーバーを訪れるときにそのメモを渡せば、サーバーが物忘れしても問題ないです!
*補足(誤解を生まないために)
セッションcookieはセッションを管理する専門のcookieというわけではありません。
また、セッションの管理の方法は、セッションcookieを使ったものだけではありません。
URLにセッションIDを含める方法などもあります。
あくまで、セッション管理にcookieが使われるからそこをごちゃごちゃにならないようにねという説明のための文章なので、抽象的な説明ですがご考慮いただければ幸いです
まとめ
今までのをまとめると、
- webサーバー忘れっぽいんだよね~(ステートレスな通信のため)
- なんかいい方法ないかな?
- そうだ整理券(メモ)を使おう!(セッションIDで管理する方法)
- cookieにメモを保存して次通信するときに一緒に持ってきてもらおう!
-
結論をまとめるとすれば、
セッションは、サーバーがだれかを識別するための手段であり、それにcookieが使われるよっていう話です。
だから初めに話した通り,セッション管理の手段としてcookieがあるのでcookieとセッションは、全然違うのです。
最後に
だいぶかみ砕いています。
大方cookieとセッションの違いについてのイメージは伝わったでしょうか?
何度も言いますが正確性に欠けます。
そこについては各自で調べてください。