Skip to the content.

最終更新日:2026年5月13日

Cookieとは?HTTPヘッダで扱う状態管理の基本

Cookieは、Webサイトがブラウザに小さな情報を保存させ、次回以降の通信でその情報を送り返してもらう仕組みです。

SG試験では、

  • Cookieはどこに保存されるのか
  • どのHTTPヘッダで送られるのか
  • Secure、HttpOnly、SameSiteは何を守るのか
  • Cookie自体が暗号化するのか

を切り分けられることが大切です。


まず結論

Cookieは、HTTPのような状態を持たない通信で、ログイン状態などを維持するための仕組みです。

重要なのは、次の2つのHTTPヘッダです。

ヘッダ 向き 役割
Set-Cookie サーバ → ブラウザ Cookieをブラウザに保存させる
Cookie ブラウザ → サーバ 保存済みCookieをサーバへ送る

つまり、Cookieは

サーバがブラウザに保存させ、ブラウザが次回以降のリクエストで送り返す情報

と考えると分かりやすいです。

ただし、ここで注意したいのは、Cookieそのものが通信を暗号化するわけではないという点です。

通信内容を暗号化するのは、Cookieではなく HTTPS です。


直感的な説明

Webページを見るとき、HTTP通信は基本的に「1回ごとのやり取り」です。

たとえば、店員さんに毎回はじめて会うようなイメージです。

  • 1回目:ログインする
  • 2回目:マイページを見る
  • 3回目:購入履歴を見る

このとき、何も目印がなければ、サーバは

この人はさっきログインした人かな?

と判断できません。

そこで使われるのがCookieです。

Cookieは、ブラウザに保存される「会員証」や「整理券」のようなものです。

サーバはブラウザに対して、

次からこの情報を持ってきてね

という形でCookieを渡します。

その後、ブラウザは同じサイトへアクセスするときにCookieを添えて送ります。

この仕組みによって、ログイン状態やカートの情報などを維持できます。


定義・仕組み

Cookieは、HTTPヘッダを使ってやり取りされます。

Set-Cookie:サーバからブラウザへ送る

Set-Cookie は、サーバがブラウザにCookieを保存させるためのレスポンスヘッダです。

例:

Set-Cookie: session_id=abc123; Secure; HttpOnly; SameSite=Lax

この例では、サーバがブラウザに対して、session_id=abc123 というCookieを保存させています。

あわせて、SecureHttpOnlySameSite などの属性を指定しています。

Cookie:ブラウザからサーバへ送る

Cookie は、ブラウザが保存済みCookieをサーバへ送るためのリクエストヘッダです。

例:

Cookie: session_id=abc123

ブラウザは、対象のドメインやパスなどの条件に合うCookieを、自動的にリクエストへ付けて送ります。

SG試験では、

  • Set-Cookie はサーバからブラウザ
  • Cookie はブラウザからサーバ

という向きをまず押さえると、選択肢を切りやすくなります。


Cookieの主な属性

Cookieには、有効期限や送信条件を制御する属性があります。

有効期限:Expires / Max-Age

Cookieには、有効期限を設定できます。

代表的な属性は次の2つです。

属性 意味
Expires いつまで有効かを日時で指定する
Max-Age 何秒間有効かを秒数で指定する

有効期限がないCookieは、一般にブラウザを閉じるまでのセッションCookieとして扱われます。

有効期限があるCookieは、ブラウザを閉じても残ることがあります。

Secure

Secure は、Cookieを HTTPS通信のときだけ送信する ための属性です。

ここで大事なのは、

SecureはCookieを暗号化する属性ではない

という点です。

Secureは、Cookieの送信先をHTTPSに限定する属性です。 通信を暗号化するのはHTTPSです。

HttpOnly

HttpOnly は、JavaScriptからCookieを読み取れないようにする属性です。

これにより、XSS攻撃などで悪意あるスクリプトがCookieを盗むリスクを下げられます。

ただし、HttpOnlyを付けても、ブラウザはHTTPリクエストにはCookieを送信します。

つまり、HttpOnlyは

JavaScriptから読ませないための設定

です。

通信を暗号化する設定ではありません。

SameSite

SameSite は、別サイトからのリクエストにCookieを送るかどうかを制御する属性です。

CSRF対策と関係します。

代表的には、次のように考えます。

イメージ
Strict 同じサイトからのリクエストだけにかなり厳しく制限する
Lax 通常のページ遷移などでは送るが、危険な送信を抑える
None 別サイトからのリクエストにも送る。通常はSecureも必要

SG試験では、SameSiteは

Cookieを別サイトからのリクエストに送るかどうかを制御する属性

と覚えるとよいです。


どんな場面で使う?

Cookieは、Webサービスでよく使われます。

代表例は次のとおりです。

場面 Cookieの使われ方
ログイン状態の維持 セッションIDなどを保存する
ショッピングカート カート情報や識別情報を保持する
表示設定 言語設定やテーマ設定を保存する
アクセス解析 利用者の再訪問などを識別する

特にSG試験では、ログイン状態の維持やセッション管理と関連して出題されやすいです。

ただし、Cookieにパスワードそのものを保存するような設計は危険です。

一般的には、CookieにはセッションIDなどを保存し、実際のログイン情報や権限情報はサーバ側で管理します。


よくある誤解・混同

誤解1:Cookieは通信を暗号化する

これは誤りです。

Cookieは、状態を管理するための仕組みです。 通信を暗号化する仕組みではありません。

通信内容を暗号化するのはHTTPSです。

項目 役割
Cookie 状態管理
HTTPS 通信の暗号化
Secure属性 HTTPSのときだけCookieを送る

試験では、

Cookieによって通信内容を暗号化する

という選択肢は切る候補になります。

誤解2:Secureを付けるとCookieの中身が暗号化される

これも誤りです。

Secure は、CookieをHTTPS通信時にだけ送信するための属性です。

Cookieの値そのものを暗号化する機能ではありません。

Cookieの中身を安全に扱うには、

  • HTTPSで通信する
  • 不要な情報をCookieに入れない
  • 必要に応じてサーバ側で署名や暗号化を行う

といった設計が必要です。

誤解3:HttpOnlyを付けるとCookieは送信されない

これも誤りです。

HttpOnly は、JavaScriptからCookieを読めないようにする属性です。

ブラウザは、条件に合えばHTTPリクエストにはCookieを送信します。

属性 何を制御するか
Secure HTTPSのときだけ送信
HttpOnly JavaScriptからの読み取りを制限
SameSite 別サイトからのリクエスト時の送信を制限

誤解4:Cookieは必ずサーバに保存される

Cookieは、基本的にブラウザ側に保存されます。

ただし、Cookieに入っているセッションIDに対応するログイン状態や権限情報は、サーバ側で管理されることが多いです。

試験では、

  • Cookie自体の保存場所:ブラウザ側
  • セッション情報の実体:サーバ側で管理されることが多い

という切り分けが大切です。


保存場所・暗号化主体・設定主体の切り分け

Cookieの問題では、次の3つを分けると考えやすいです。

観点 答え
Cookieを保存する場所 ブラウザ側
Cookieを設定する主体 主にサーバ側。Set-Cookieで指示する
Cookieを送り返す主体 ブラウザ側。Cookieヘッダで送る
通信を暗号化する主体 HTTPS
Cookie送信をHTTPSに限定する属性 Secure
JavaScriptからの読み取りを防ぐ属性 HttpOnly
別サイト経由の送信を制御する属性 SameSite

特に、

暗号化はCookie機能ではなくHTTPS

という点は、試験でひっかけになりやすいです。


確認問題

問題

Cookieに関する説明として、適切なものはどれか。

  1. Cookieは、通信内容を暗号化するためのHTTPの仕組みである。
  2. Set-Cookie は、ブラウザがサーバへCookieを送信するためのリクエストヘッダである。
  3. HttpOnly 属性を付けると、JavaScriptからCookieを読み取りにくくできる。
  4. Secure 属性を付けると、Cookieの値そのものが暗号化される。

解答

正解は 3 です。

解説

1は誤りです。 Cookieは状態管理の仕組みであり、通信を暗号化する仕組みではありません。 通信を暗号化するのはHTTPSです。

2は誤りです。 Set-Cookie は、サーバがブラウザにCookieを保存させるためのレスポンスヘッダです。 ブラウザがサーバへ送るときは Cookie ヘッダを使います。

3は正しいです。 HttpOnly は、JavaScriptからCookieを読み取れないようにする属性です。 XSSによるCookie窃取リスクを下げる目的で使われます。

4は誤りです。 Secure は、CookieをHTTPS通信時にだけ送信する属性です。 Cookieの値そのものを暗号化する機能ではありません。


まとめ(試験直前用)

Cookieは、HTTPで状態管理を行うための仕組みです。

試験直前は、次の3点で切り分けましょう。

  • Set-Cookieサーバ → ブラウザCookieブラウザ → サーバ
  • SecureHTTPS時だけ送信、暗号化そのものではない
  • HttpOnlyJavaScriptから読ませないSameSite別サイト経由の送信制御

Cookieの問題では、

状態管理なのか、暗号化なのか、アクセス制限なのか

を分けて考えると、誤答選択肢を切りやすくなります。


参考リンク

© 2024-2026 stemtazoo. All rights reserved.