Cookie
Cookieの概要Cookieの主な用途Cookieの構成Cookieの属性一覧Cookieの受け渡し方法Cookieの受け渡しのフローCookieの種類1st party Cookie3rd party Cookie
Cookieの概要
Cookie(クッキー)とは、ユーザ(ブラウザ)がWebサイトを閲覧した際にサーバが発行し、ブラウザに一時的に保存されるテキスト情報のこと。
ブラウザは再度同じWebサイトを訪問する際に、保存したCookie情報をサーバへ送信する。
Cookieの主な用途
- ユーザがサイトにログインしているかどうかの判定(セッション管理)
- ショッピング系のサイトでカートの中身(購入保留中の商品データ情報)を記録
- ユーザ個別設定の記録
- サイト運営者によるアクセス解析
- 広告業者による各ユーザに合った広告の表示
Cookieの構成
Cookieは「<Cookie名> = <Cookie値>」から成り、オプションとして「属性」を追加できる。
「属性」はCookieの使われ方などの条件を指定するための値で省略可能。
各属性はセミコロン「;」で区切られる。
以下の図はCookie名「CNT」, Cookie値「123」のCookieの例。
Cookieの属性一覧
属性名 | 概要 | 値の例 |
---|---|---|
Domain | Cookieの送信対象としたいドメインを指定 (上位ドメインのみ設定可能) | shukapin.com |
Path | 対象となるディレクトリ (指定しない場合はCookieを発行したページのパスになる) | /test |
Expire | Cookieの有効期限(日時指定) | Sun, 09 Apr 2023 12:00:00 GMT |
Max-Age | Cookieの有効期限(発行からの有効時間指定) | 216000 |
Secure | HTTPS通信の場合にのみCookieを送信 | - |
HttpOnly | JavaScriptからCookie情報へアクセスすることを禁止 | - |
SameSite | 別のドメインに貼られているリンクからアクセスした際のCookie送信の許可/拒否設定 | ・Strict (別ドメインへCookie送信禁止) ・Lax (GETリクエストのみ別ドメインにCookie送信可能) ・None (別ドメインにCookie送信可能) |
※「Expire」属性または「Max-Age」属性が指定されていない場合、セッション終了時にcookieが削除される。
▼ Cookieの属性の詳細な仕様はこちらを参照!
Cookieの受け渡し方法
Cookieはリクエストメッセージ・レスポンスメッセージのHTTPヘッダに格納されて送受信される。
- サーバ→ブラウザ:レスポンスメッセージの「Set-Cookie」ヘッダに格納して送信
- ブラウザ→サーバ:リクエストメッセージの「Cookie」ヘッダに格納して送信
Cookieの受け渡しのフロー
Cookie「CNT」がブラウザとサーバ間でどのように受け渡され、どのように使われるかを以下の図に示す。
【保存しているCookieが無い場合】
① ブラウザはサーバにリクエストを送信する。
② サーバはレスポンス内に「Set-Cookie」ヘッダを追加して、Cookieを送信する。
③ ブラウザはCookieの情報を保存する。
【保存しているCookieがある場合】
④ ブラウザは保存しているCookieがある場合、リクエストの「Cookie」ヘッダにCookie情報を追加して送信する。
⑤ サーバは受け取ったCookie情報を基にレスポンスを作成する。
⑥ サーバはブラウザ側のCookie情報を更新する場合、「Set-Cookie」ヘッダでCookieを送信する。
Cookieの種類
どこから発行されるのかによって、Cookieは「1st party Cookie」(ファーストパーティCookie)と「3rd party Cookie」(サードパーティCookie)の2種類に分類される。
1st party Cookie
ユーザが訪問しているサイト自身が発行するCookie。
サイト(ドメイン)を横断して利用することはできない。
3rd party Cookie
ユーザが訪問しているサイトとは異なるサイトが発行するCookie。
複数サイトから横断的にCookieを付与して個人を特定し、利用者が全く関係ないサイトを見た時にも、関連する広告を配信可能とするために利用。
※ Googleは2023年を目処にChromeでのサードパーティCookieのサポートを終了予定。