Webブラウザは表示したサイトに関する様々なデータを記憶しています
例えば
- cookie
- cache
- HTTP認証の情報
- localStorage
- service worker registrations
しかしサーバ側からこれらのデータを明示的に消すのは難しい場合があります。例えば、httpOnlyのcookieは現在ブラウザにどのようなCookieがセットされているか知るのは難しいでしょう。
そこで、そのようなデータを消す Clear-Site-Data レスポンスヘッダ がW3Cで議論されています。実は、3年前に「Clear Site Data、ブラウザのローカルデータを削除する仕組み」で書いたときから微妙な変更が入っている。
また、ブラウザへの実装も進んでおり試せるような段階となってきている。
- mozilla.dev.platform: Intent to ship: Clear-Site-Data header
- blink-dev: Intent to Ship: Clear-Site-Data header
試す
こんな感じのヘッダを付けて、Chromeでcookieが消えるのを確認した
Clear-Site-Data: "cache", "cookies", "storage"
ちなみに仕様上指定できるのは
- cache: そのドメインのキャッシュ
- cookies: そのドメインのCookie, Channel IDs, TokenBindingのトークン
- storage: そのドメインのlocalStorage, sessionStorage,
- executionContexts: ... (毎回よくわからに
- *: 全て
雑にCookieを設定する
消える
reloadしてClear-Site-Dataレスポンスヘッダを受け取ると消える。
executionContextsや、HTTP認証情報などは現状消えないが概ね動作している模様