LoginSignup
4
3

More than 3 years have passed since last update.

Cookieとセッション

Last updated at Posted at 2021-04-13

cookieとセッションって何が違うのかよく分からなかったので調べました!

以下のYoutubeで勉強させていただきました:pray_tone1:
Cookieとセッションってなに?ゼロからわかりやすく解説
実演付きで説明する、クッキーの仕組み

そもそも何故必要か

例えばスマホやPCでAmazonにアクセスして、以前のログイン状態やカートに入れた商品が残るのはcookieやセッションのおかげです。

と、いうのもHTTPはステートレスといってログイン状態などの状態を管理していないものらしい。
でも、これだといちいちブラウザを閉じるたびに会員情報を入力しなきゃいけないし、すっごく面倒...
なのでCookieを使ったセッション管理を用いてログイン状態などを実現させています。

Cookieとセッションって全くの別のものかと思ってましたが、cookieを使ってセッション管理をしているんですね。
なるほど。

セッションとCookie

セッションとは
一連の動作や処理の始まりから終わりまでを表す概念です。

Cookieとは
ブラウザのテキスト情報を保存する仕組みです。

と、動画では解説されていたのですが
「ん?なんか現役エンジニアの方が使う意味と違う気がするな」と思って聞いてみました。

セッションにはもう1つ意味があり
サーバー側がブラウザに渡す識別番号のようなものだそうです。セッションIDと言います。

一連の流れで例を表すと、下記の図のようになります。
①ブラウザからサーバーにログインする
「はじめましてー」
②サーバーはその情報を管理するための識別番号を渡す(これがセッションID)
「あなたの識別番号は×××なので次回もこちらの識別番号を持ってきてね」
③その識別番号をブラウザはCookieに保存する
「OK。忘れないようにCookieに保存しておくね」

BIZ-MTG - Frame 1.jpg

で、上記の状態で一度ブラウザを閉じるとHTTP自体には保存する機能がないのですが
Cookieを使ったセッション管理をすることにより以下の図のようになります。

①Cookieに保存した識別番号を持ってサーバーにアクセスする
「以前ログインした者です。識別番号×××でーす」
②サーバーは識別番号を元に以前の情報を引き継いでHTMLを表示
「はいはい。また来てくれてありがとね。識別番号×××のあなたのページを出しますねー」

BIZ-MTG - Frame 1 (1).jpg

Cookieの仕組み

じゃあどうやって識別番号を送ったり、Cookieとして保存しているのか。
以下の図のようになります。

①サーバーはブラウザに識別番号をSet-Cookie:~で渡す。
②ブラウザはSet-Cookie:~で送られてきたら保存するように命令されているのでCookieに保存する。
③再度アクセスするときにCookieから識別番号を取り出してCookie:~と渡す。
④サーバーはCookie:~を受け取るとCookieでのログインだと分かり該当の情報を返す。

BIZ-MTG - Frame 1 (2).jpg

なるほど!
このような仕組みで我々は便利にWebアプリを使うことができるんですね!
なんとなーくの理解から少し人に説明できるくらいには理解できました!

以上です!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3