cookieとセッションって何が違うのかよく分からなかったので調べました!
以下のYoutubeで勉強させていただきました
Cookieとセッションってなに?ゼロからわかりやすく解説
実演付きで説明する、クッキーの仕組み
そもそも何故必要か
例えばスマホやPCでAmazonにアクセスして、以前のログイン状態やカートに入れた商品が残るのはcookieやセッションのおかげです。
と、いうのもHTTPはステートレス
といってログイン状態などの状態を管理していないものらしい。
でも、これだといちいちブラウザを閉じるたびに会員情報を入力しなきゃいけないし、すっごく面倒...
なのでCookieを使ったセッション管理
を用いてログイン状態などを実現させています。
Cookieとセッションって全くの別のものかと思ってましたが、cookieを使ってセッション管理をしているんですね。
なるほど。
セッションとCookie
セッションとは
一連の動作や処理の始まりから終わりまでを表す概念
です。
Cookieとは
ブラウザのテキスト情報を保存する仕組み
です。
と、動画では解説されていたのですが
「ん?なんか現役エンジニアの方が使う意味と違う気がするな」と思って聞いてみました。
セッションにはもう1つ意味があり
サーバー側がブラウザに渡す識別番号のようなもの
だそうです。セッションIDと言います。
一連の流れで例を表すと、下記の図のようになります。
①ブラウザからサーバーにログインする
「はじめましてー」
②サーバーはその情報を管理するための識別番号を渡す(これがセッションID)
「あなたの識別番号は×××なので次回もこちらの識別番号を持ってきてね」
③その識別番号をブラウザはCookieに保存する
「OK。忘れないようにCookieに保存しておくね」
で、上記の状態で一度ブラウザを閉じるとHTTP自体には保存する機能がないのですが
Cookieを使ったセッション管理をすることにより以下の図のようになります。
①Cookieに保存した識別番号を持ってサーバーにアクセスする
「以前ログインした者です。識別番号×××でーす」
②サーバーは識別番号を元に以前の情報を引き継いでHTMLを表示
「はいはい。また来てくれてありがとね。識別番号×××のあなたのページを出しますねー」
Cookieの仕組み
じゃあどうやって識別番号を送ったり、Cookieとして保存しているのか。
以下の図のようになります。
①サーバーはブラウザに識別番号をSet-Cookie:~
で渡す。
②ブラウザはSet-Cookie:~
で送られてきたら保存するように命令されているのでCookieに保存する。
③再度アクセスするときにCookieから識別番号を取り出してCookie:~
と渡す。
④サーバーはCookie:~
を受け取るとCookieでのログインだと分かり該当の情報を返す。
なるほど!
このような仕組みで我々は便利にWebアプリを使うことができるんですね!
なんとなーくの理解から少し人に説明できるくらいには理解できました!
以上です!