← ハシトシステム トップ English ツール ブログ
入力
解析結果

Set-Cookie の行を貼り付けると、属性の内訳と問題点がここに出ます。

Set-Cookie の読み方

Set-Cookie はサーバーがブラウザにクッキーを保存させるレスポンスヘッダです。書式は 名前=値; 属性; 属性=値 で、先頭のセミコロンまでが名前と値、それ以降がすべて属性です。属性の順番に決まりはありません。ブラウザは知らない属性を黙って捨てるので、綴りを間違えた属性はエラーにならず、ただ効かなくなります。このツールが未知の属性を表示するのはそのためです。

実務でよく詰まるのは、設定したはずのクッキーが保存されていないという状況です。原因の多くは、値そのものではなく属性の組み合わせにあります。ブラウザの開発者ツールは「保存されなかった」ことは示しても、どの規則に触れたかまでは教えてくれないことがあります。

拒否される主な条件

条件結果
SameSite=None なのに Secure が無い保存されない
__Secure- で始まるのに Secure が無い保存されない
__Host- で始まるのに Domain がある保存されない
__Host- で始まるのに Path/ でない保存されない
名前と値の合計が 4096 バイトを超える保存されない(一般的な上限)

有効期限の決まり方

Max-AgeExpires も無ければセッションクッキーになり、ブラウザを閉じると消えます。両方あるときは Max-Age が優先されます。Max-Age の値が整数でない場合、その属性ごと無視されるため、Max-Age=1w のような書き方は「1週間」ではなく「期限なし」になります。このツールは、どちらの属性で期限が決まったかを毎回表示します。

解析はすべてブラウザ内で行っています。貼り付けた内容がサーバーへ送られることはありません。判定の根拠は RFC 6265 と、Cookie の仕様更新(SameSite・接頭辞・Partitioned)に基づいています。

よくある質問(FAQ)

SameSite=None なのに保存されません。なぜですか?

SameSite=None には Secure が必須だからです。Secure が無い SameSite=None のクッキーは、主要なブラウザが保存自体を拒否します。HTTPS のページで、Secure を必ず付けてください。

Max-Age と Expires を両方書いたらどちらが勝ちますか?

Max-Age が勝ちます。RFC 6265 は、両方あるときに Max-Age を優先すると定めています。ただし Max-Age を理解しない古い実装向けに Expires を併記する運用は今も残っています。

__Host- を付けたら保存されなくなりました。

__Host- で始まる名前には3つの条件があります。Secure が付いていること、Domain が無いこと、Path が / であることです。1つでも欠けるとブラウザが拒否します。Domain を書かないので、サブドメインには送られません。

入力したクッキーの値はサーバーに送られますか?

いいえ。解析はすべてブラウザ内の JavaScript で行います。貼り付けた内容がネットワークに出ることはありません。実際のセッションIDを貼っても外部には残りません。