▪️目的

WEBサイトにアクセスすると、頻繁に画面上でCookieの許可を求められることがありませんか?「Cookie」と聞くと美味しそうなイメージを持つ方もいるかもしれませんが、実は私たちがWEBサイトを快適に使用するためには欠かせない存在です。

今回はCookieの仕組みに焦点を当てながら、Cookieとは何なのかを解説していきます。

▪️Cookieとは

Cookieは「WEBブラウザに保存される小さなデータ」で次回以降のHTTP通信でもサーバに情報を伝えられる仕組みです。

♦︎そもそもCookieはなぜ必要

まず、HTTPには基本的に「前のリクエストを覚えておく」という仕組みがありません。

例えば、WEBサイトにログインしたとすると、

  1. ユーザが「ID」「パスワード」を送信する
  2. サーバが認証してログインを許可する
  3. ユーザが次のページに移動(次のページのリクエストを送信)する
  4. サーバは何もしなければ、そのリクエストが先程ログインしたユーザのものかは分かりません

HTTP通信はリクエストごとに行われるため、前回の通信でログインしたことを次の通信でも伝える仕組みが必要です。ここで使われるのが「Cookie」です。

▪️Cookieの仕組み

①ブラウザからログイン

ブラウザが「ID」「パスワード」をサーバに送信する。

②③サーバが認証

認証に成功したらサーバは「セッションID」を発行し、レスポンスの「ヘッダー」でCookieの保存を指示します。

(例)

HTTP/1.1 200 OK
Set-Cookie; session_id = 〇〇〇〇; HttpOnly; Secure

④ブラウザがCookieを保存

ブラウザがCookieを保存します。
通常、適用対象のドメインなどの条件に合うリクエストで自動的に「Cookie」を送信します。

⑤次のリクエストでCookieを送信

サーバは「セッションID」を使って、ログイン状態を確認できます。

(例)

GET /mypage HTTP/1.1
Host: lovelab.com
Cookie: session_id = 〇〇〇〇

Set-Cookie・・・サーバが「セッションID」を発行
Cookie・・・ブラウザが「セッションID」をサーバに送信して認証

▪️Cookieとセキュリティ

Cookieは便利ですが、セキュリティ上の注意もあります。

HttpOnly

JavaScriptからCookieを読み取れないようにします。

Secure

HTTPS通信でのみCookieを送信します。

SameSite

別サイトを起点とするリクエストに対しては、Cookieを送信しないように設定します。

▪️Cookie使用例

♦︎ショッピングカート

ページを移動しても、カートの識別情報などを維持するために使用されます。

♦︎設定の保存

言語や表示設定などのユーザの好みを維持するために使われることがあります。

♦︎ALBのスティッキーセッション

ALBの「スティッキーセッション」は、特定ユーザからのリクエストを同じターゲットに継続してルーティングする機能です。これも裏側で「Cookie」を使用することで実現しています。

▪️まとめ

Cookieは私たちがWEBサイトを快適に使用するために不可欠な存在です。
普段意識することはなかなかありませんが、ブラウザとサーバが裏で様々な情報のやり取りを行うことで実現しています。

インフラエンジニアを目指す、もしくはインフラエンジニアの皆さんはこうした裏側の仕組みに好奇心を持ちながら取り組めると知らずのうちに知識が蓄積していき、トラブルや障害が起きても冷静に対応できるようになります。

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

Latest Comments

表示できるコメントはありません。