Set-Cookie ヘッダの属性を分解し、ブラウザに拒否される条件を指摘します
Set-Cookie の行を貼り付けると、属性の内訳と問題点がここに出ます。
Set-Cookie はサーバーがブラウザにクッキーを保存させるレスポンスヘッダです。書式は 名前=値; 属性; 属性=値 で、先頭のセミコロンまでが名前と値、それ以降がすべて属性です。属性の順番に決まりはありません。ブラウザは知らない属性を黙って捨てるので、綴りを間違えた属性はエラーにならず、ただ効かなくなります。このツールが未知の属性を表示するのはそのためです。
実務でよく詰まるのは、設定したはずのクッキーが保存されていないという状況です。原因の多くは、値そのものではなく属性の組み合わせにあります。ブラウザの開発者ツールは「保存されなかった」ことは示しても、どの規則に触れたかまでは教えてくれないことがあります。
| 条件 | 結果 |
|---|---|
SameSite=None なのに Secure が無い | 保存されない |
__Secure- で始まるのに Secure が無い | 保存されない |
__Host- で始まるのに Domain がある | 保存されない |
__Host- で始まるのに Path が / でない | 保存されない |
| 名前と値の合計が 4096 バイトを超える | 保存されない(一般的な上限) |
Max-Age も Expires も無ければセッションクッキーになり、ブラウザを閉じると消えます。両方あるときは Max-Age が優先されます。Max-Age の値が整数でない場合、その属性ごと無視されるため、Max-Age=1w のような書き方は「1週間」ではなく「期限なし」になります。このツールは、どちらの属性で期限が決まったかを毎回表示します。
解析はすべてブラウザ内で行っています。貼り付けた内容がサーバーへ送られることはありません。判定の根拠は RFC 6265 と、Cookie の仕様更新(SameSite・接頭辞・Partitioned)に基づいています。
SameSite=None には Secure が必須だからです。Secure が無い SameSite=None のクッキーは、主要なブラウザが保存自体を拒否します。HTTPS のページで、Secure を必ず付けてください。
Max-Age が勝ちます。RFC 6265 は、両方あるときに Max-Age を優先すると定めています。ただし Max-Age を理解しない古い実装向けに Expires を併記する運用は今も残っています。
__Host- で始まる名前には3つの条件があります。Secure が付いていること、Domain が無いこと、Path が / であることです。1つでも欠けるとブラウザが拒否します。Domain を書かないので、サブドメインには送られません。
いいえ。解析はすべてブラウザ内の JavaScript で行います。貼り付けた内容がネットワークに出ることはありません。実際のセッションIDを貼っても外部には残りません。