抽象的な説明より、実際に見た方が早い。
結論から言うと、Cookieとはサーバからプレゼントされた秘密のコードを保存したエクセル表のようなファイル。
ただのファイルなのです。それが以下。
Path:"C:\Users\User-Name\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies"
メモ帳で開く。QiitaもCookieを採用しているので当然ヒットしているが、文字化けする。
これはデータベース方式で保存されているため。
全く同じファイルをデータベースを開く専用のアプリで開くと、エクセルのような表形式で確認できる。
隠していますが右にセッションIDなどがあります。
イメージがついた所で、Cookie利用の流れ
1."qiita.com"にブラウザ(Chrome、Edge等)がアクセス。「Cookieを保存するか」に「はい」を選択
2.返答でサーバからセッションIDなどが送信される。
3.ブラウザは、そのセッションIDなどの情報を先ほどのファイルの表に保存しておく。
4.後日、"qiita.com"にアクセスする際、Cookieを先に確認し、表に"qiita.com"があれば、そこに保存されているセッションID等を使って自動でログイン等したりする。
これだけです。
さらに理解を深めようのコーナー
上記の図から分かるように、Cookieはドメイン(図にあるaccounts.google.comや、.chatgpt.com等)で別けて保存されています。
つまり、"accounts.google.com"のセッションIDは".chatgpt.com"では適用されません。
ドメインが異なると、セッションIDも使いまわせず別になるということですね。当たり前か。
また、Cookieはブラウザ毎に保存場所が異なります。
Chromeは、『C:\Users\User-Name\AppData\Local\Google\Chrome\~』
Edgeは、『C:\Users\User-Name\AppData\Local\Microsoft\Edge\』
なので、Chromeで自動ログインできても、EdgeのCookieファイルには保存されていない場合、Edgeからは自動ログインできません。
まとめるとCookeの特徴は、
・ドメインが異なると、セッションIDは使いまわせない
・ブラウザが異なると、Cookieファイルは別のためセッションIDは使いまわせない
となります。
ドメインの件については当たり前のように感じますよね。だってGmailのセッションIDで、Qiitaにアクセスされても困りますし。
しかしこれはSSO(シングルサインオン)を利用する際、大きな障害となります。
この話はまた他の機会に