Webセキュリティ

Cookieパーサー送信方向と属性を読み解く

Cookieリクエスト、または1行につき1件のSet-Cookieレスポンスを入力します。生成タブでは1件のヘッダーを組み立てます。

Cookieパーサー

ヘッダー入力

入力はこのブラウザー内だけで処理し、通信もCookieの変更もしません。

解析結果または生成したヘッダー

ヘッダーまたはCookie名を入力してください。

設定

ヘッダーまたはCookie名を入力してください。

セッションが保存されたはずなのに次のリクエストで送られないとき、Cookieパーサーで両方向のヘッダーを確認できます。Cookieリクエストは名前と値の組、Set-Cookieレスポンスは属性を含む1件の指定です。

Cookie解析では、指定されていないSameSiteと明示されたLaxを区別します。Cookieパーサーは捕獲した文字列をそのまま読むため、ブラウザーの既定値を元データへ勝手に補いません。

Cookieパーサーを使う理由

リクエストとレスポンスを取り違えず、期限の根拠を示します。

存在しない属性を作らない

Cookieパーサーはリクエストの複数の組とレスポンスの属性を別々に表示します。単独のname=valueは判別できないため、入力種別を指定できます。DomainやHttpOnlyを推測して補いません。

Cookieリクエストの2組の名前と値、Set-Cookieレスポンスの1組と属性一覧。

どの期限が優先かを確認

Max-AgeとExpiresが両方ある場合はMax-AgeからUTC期限を推定し、優先関係を警告します。Cookieパーサーの推定はブラウザーでの受理や保存を保証しません。

Max-Ageが優先と示され、Expiresと推定時刻が別々に見える図。

Cookie属性確認と有効期限の読み方

01

方向を確かめる

Cookie:とSet-Cookie:は自動判定します。名前と値だけの行は曖昧なので手動で種類を選びます。複数のSet-Cookieは行を分け、Expiresの日付にあるカンマで区切りません。

02

更新のタイミングを選ぶ

自動実行は編集後350ミリ秒待ちます。オフにすると解析ボタンかCtrl/Cmd+Enterで実行できます。入力や種類を変えた直後は前の結果をコピーできません。

03

期限の根拠を確認

セッション、Max-Age、Expiresを区別して表示します。生成時の既定はセッションで、秒数かローカル日時を選ぶと対応する期限属性だけを出力します。

属性の確認と応答ヘッダーの作成

方向ごとに異なる構文

Cookieリクエストは1行に複数のname=valueを送れます。Set-Cookieレスポンスは1行で1件を設定し、Domain、Path、SameSite、Secure、HttpOnly、期限属性を持てます。不明な属性も残します。

位置が分かる矛盾の警告

SameSite=NoneやPartitionedにSecureがない場合と、__Host-・__Secure-の条件違反を示します。重複属性や不正な日時は元の行に結び付けます。ブラウザーの実際の判定は行いません。

1件だけ生成する

既定のPath=/、SameSite=Lax、Secure、HttpOnlyから1行のSet-Cookieを作ります。Domainを空にすると出力しません。セッション、Max-Age、Expiresを選べますが、ブラウザーへ書き込みません。

文字列だけで判断できる範囲

リクエストから属性は復元できない
CookieリクエストにDomain、Path、HttpOnlyなどの設定情報はありません。Cookieパーサーは属性の欠落をfalseと決めつけません。必要なら元のSet-Cookieレスポンスを確認してください。
応答は1件ずつ改行する
Set-Cookieは1行で1件です。Expiresの日付にカンマがあるため、複数行をカンマで結合しないでください。誤りの行は位置を示し、正常な行は残します。JSONやNetscape形式の変換は対象外です。
実ブラウザーの結果ではない
期限は端末の時刻から推定します。送信元ホスト、HTTPS、サーバーのDateやブラウザー設定は分かりません。URL取得、HttpOnly Cookieの読み出し、document.cookieへの書き込み、共有URLの作成はしません。

Cookieパーサーのよくある質問

CookieとSet-Cookieの違いは何ですか?

Cookieはリクエストに複数の名前と値を載せ、Set-Cookieはレスポンスの1行で1件と属性を指定します。自動判定が曖昧な場合は種類を手動で選べます。

SameSite=NoneでSecureが必要なのはなぜですか?

SameSite=Noneはクロスサイト送信を許すため、Secureが必要です。ツールは欠落を警告しますが、実際の接続がHTTPSかどうかは捕獲元で確認してください。

ExpiresとMax-Ageが両方ある場合はどうなりますか?

有効なMax-AgeがExpiresより優先します。端末の現在時刻に秒数を足したUTC推定値を表示しますが、ブラウザーはレスポンスのDateで時刻差を補正する場合があります。

HttpOnlyのCookieはJavaScriptから読めますか?

HttpOnlyのCookieは通常document.cookieから読めませんが、条件に合うHTTPリクエストには送られます。このページは貼り付けたヘッダーだけを解析します。

Partitioned属性は何を意味しますか?

Partitionedはトップレベルサイトごとに保存領域を分ける指定です。解析時に属性を残し、Secureの欠落を警告します。生成フォームにはまだなく、ブラウザー対応も判定しません。

解析に問題がありましたか?

次のヘッダーもCookieパーサーで確認

捕獲した文字列の方向と矛盾を確認し、最新の解析結果または生成した1行をコピーしてください。

処理はこのブラウザー内で完結します。