Cookieって何それ?美味しいの??

Cookieっていったらあの美味しいサクサクのクッキーのこと?
いや、Web上ではどうやら違いみたい。
そんな美味しい(美味しくない)Cookieの解説。

HTTPにおいてサイトにアクセスした時に、Webサーバーからユーザのコンピュータに送られる情報の一部のこと。
リクエストに対するレスポンスの"HTTP Header"での中で送信され、Webブラウザに保存される。

なぜ必要なの?

ユーザーがWebサイト上の幾つかのページに次々とアクセスしたとき、サーバーは単にユーザの要求に応答するだけで、同じユーザーがこのサイトを彷徨いていることは認識していない。
これはHTTPが通信を一回ごとに完結させる仕組みになっているためであり、このようなプロトコ ル(通信手順)を Stateless Protocol(ステートレスプロトコル)と呼ぶ。
その代表がHTTP(HyperText Transfer Protocol)であり、HTTPだけでは同じユーザーの認識ができない。

そこでサーバーに初めてアクセスしたとき、サーバーはユーザー固有のCokkie情報を返す。
それがブラウザに保存されることによって、次回以降のアクセス時にサーバーはブラウザに保存してあるCookieを読み取り同一ユーザの認識を行うことができる!

つまり、Cookieの目的はステートレス(状態を維持できない)なプロトコルであるHTTP上で、状態管理ができるようにすることである!!

ちなみにCookieは最大4KBであり、実行コードを含むことはできない。

HTTP Cookiesには Persistent Cookie(パーシステントクッキー)と呼ばれるものと Session Cookie(セッションクッキー)と呼ばれるものの二通りがある。

セッションクッキーはサーバーに対するセッションが終了した時点で(通常、ブラウザを終了した時点で)破棄される。
一方でパーシステントクッキーはセッションクッキーと異なり、Webブラウザを終了してもWebブラウザ内部に保存されている。

例えば「ログインしている状態」をセッションクッキーに持たせているとブラウザ終了時に破棄されて、もう一回ログインすることになる。
けれどもパーシステントクッキー「ログインしている状態」を持たせれば、有効期限が失効するかログアウトとかしない限り、ずっとログイン状態を保てる。

セッションクッキーは

  1. 欲しい商品をカートに入れる
  2. レジに進む
  3. 情報を入力して購入する

といった一連の操作が必要な時に用いられ、これを「セッション管理」と言う。
これはブラウザ終了時に破棄されても問題ない。

全然美味しくなかったね。
Cookieがないと一連の操作が何もできないので、サイトを作る上では必須。
Cookieとステートレスの関係がわかって、よかった