はじめに
質問されて答えることができなくて、cookieやsessionよく聞くけど理解してないやん
ってなったので調べました。
初心者なので間違っていたら指摘ください。。
自分なりの文章で書いているので悪しからず
参考文献
そもそもな話
まずHTTPについての確認が必要。
クライアントがリンクをクリックする(リクエスト)
↓
サーバーがリクエストにあったページを飛ばす(レスポンス)
といったように通信される。
サーバーは、リンクをクリックされる以前のページの状態を覚えていないため、
リクエストを送りレスポンスを受け取ったら、その通信は終了してしまう。
webサイトにログインして、物をカートに入れて購入したいとしても、ページが遷移するたびに
通信が終了するため、カートに入れた人も購入した人も覚えてないってことですね。
そのため通販サイトのようなWEBサイトは作れない。
この以前の状態を覚えていないことをステートレスということを知りました。
state(状態)がless(無い)ってことですね。
では、ステートフルにするためにはどうしたらいいか。
といった話になり、その際にcookieとsessionが関わってきます。
cookieとsession
始めにcookieから
Cookieとは、Webサイトの提供者が、Webブラウザを通じて訪問者のコンピュータに一時的にデータを書き込んで保存させる仕組み。 IT用語辞典から抜粋
つまるとことcookieはクライアント側に保存されたデータ
ブラウザ全体で300個のcookieに対応していて、1つのドメインに20個のcookieを提供できるらしいですね(1つのcookieに4096byte)
これを利用すればブラウザにデータが入っているので大丈夫かと思ったけど、
クライアント側にデータを保存するので詳しい人とかだと改竄できるってことで、
この問題を解決するためにsessionが出てきます。
コンピュータネットワークでは、接続を確立してから切断するまでの一連の通信のこと。HTTPのサイトでは、セッションにIDを振ることで同一のセッションを管理することができる。また、一連のインタラクティブな操作(例えばログインしてからログアウトするまで)を指す場合もある。
ITトレンドから抜粋
このことから、割り振られたsession IDをcookieに格納すれば
サーバーにsession IDを送信することができる。
これなら、クライアント側でsession IDが改竄されたとしても肝心の中身はサーバーにあるため
安全な通信を行うことができることになる。
まとめ
cookie
・クライアント側に保存される
・データが改竄される可能性有
session
・サーバー側に保存される
・データ改竄の可能性低
・session IDをサーバーに送信することでステートフルの状態を作れる
とのことでした。
よく見聞きする単語ですが、調べてみるとなるほどと唸るばかりでした。