Set-Cookie が保存されない時の診断手順
「レスポンスに Set-Cookie はあるのにログインが維持されない」ケースは、属性不一致とブラウザ制約の複合要因で起こります。
症状の定義
- レスポンスに Set-Cookie があるが、次リクエストに Cookie が乗らない
- 同一ブラウザでも URL やサブドメインで挙動が変わる
- 開発環境では再現せず、本番だけで発生する
診断ステップ
- 1) Set-Cookie Inspect で属性(Domain/Path/Secure/SameSite)を確認する
- 2) Cookie Domain/Path Matcher で対象URLへの送信可否を判定する
- 3) Cookie Security Audit で SameSite=None + Secure 等の安全条件を確認する
- 4) Host/Authority/Origin Inspect でオリジン差分を確認する
- 5) Cookie Size Checker でヘッダー肥大化による欠落を確認する
よくある原因
- Domain が host-only 想定と一致していない
- Path が狭すぎて必要URLに一致しない
- Secure 必須条件を満たさない HTTP リクエストを使っている
- SameSite/3rd-party 制約でブラウザが保存または送信を抑止している
修正チェックリスト
- Domain/Path を最小限かつ実運用URLに一致する形で定義する
- SameSite=None の場合は Secure を必ず併用する
- ステージング/本番で Host/Origin とTLS条件を揃えて検証する
- Cookie サイズと重複名を定期監査する
使うツール
- Set-Cookie Inspect
- Cookie Domain/Path Matcher
- Cookie Security Audit
- Cookie Size Checker
- Host/Authority/Origin Inspect
- Cookie Parser
FAQ
- Set-Cookie は見えるのに保存されないのはなぜですか?
- Domain/Path の不一致、Secure 条件、SameSite 制約、ブラウザの3rd-party制限が主因です。属性を順番に検証してください。
- ローカルでは動くのに本番で失敗するのは?
- 本番はサブドメイン・HTTPS・CDN経由など条件差が大きく、Cookie属性との不整合が出やすくなります。
参照仕様
次に見る(診断順)
site_map ルールに基づいて、次に確認すべきページを表示しています。
- Set-Cookie Inspect — Set-Cookie 属性を解析して配布方針を確認
- Cookie Domain/Path Matcher — Domain/Path/Secure 条件でCookie送信可否を判定
- SameSite Cookie Simulator — SameSite と文脈からCookie送信可否をシミュレーション
- Set-Cookie Conflict Checker — 同名Cookie競合と上書きリスクを検出
- Cookie Security Audit — Secure/HttpOnly/SameSite を監査
- Cookie Size Checker — Cookie ヘッダーサイズを見積もり上限超過を点検
- Host/Authority/Origin Inspect — Host/:authority/Origin/Referer を照合して不整合を確認
- Cookie Parser — Cookie ヘッダーを key=value 単位で分解
同テーマの導線
事例クラスタ一覧
実運用トラブル別に、最短の診断ルートへ入るためのシナリオ集
- 症状別診断ガイド(入口) — キャッシュ/CORS/JWT/MIME系の実運用トラブルを、症状起点で最短導線に振り分ける総合ハブ
- 304が返らない時の診断手順 — ETag / Last-Modified と If-* の往復を確認して 304 不発を切り分ける
- 更新したのに反映されない時の診断手順 — HTML/API/静的アセット別にキャッシュ方針を確認し、反映遅延を短時間で切り分ける
- CORS preflight失敗時の診断手順 — OPTIONS応答、Allow-*、Origin条件を順に確認して preflight 失敗を解消する
- JWT 401/403 切り分け手順 — Authorization / WWW-Authenticate / claims / 署名検証を連携して 401 と 403 を分離する
- 429/503で再試行が止まらない時の診断手順 — Retry-After の秒/日時解釈とクライアント実装差を切り分け、過剰再試行を抑える
- nosniffでJS/CSSがブロックされる時の診断手順 — Content-Type と nosniff の不一致、404/302混入、配信経路の上書きを切り分ける
- OAuth戻りでログインが維持されない時の診断手順 — IdP戻りで起きる Cookie 不達を SameSite・Secure・Path/Domain・競合で順に切り分ける
- 同名Cookie競合で不安定な時の診断手順 — 同名CookieのPath/Domain差分・上書き順・送信衝突を整理して不安定挙動を解消する
- Cookie障害の運用チェックリスト — 保存失敗・OAuth戻り失敗・同名競合を一本化し、トリアージから恒久対策まで運用手順を標準化する