Clear-Site-Data ヘッダー
Baseline
広く利用可能
*
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2023年9月以降、すべてのブラウザーで利用可能です。
Want more support for this feature? Tell us why.
* この機能の一部は、対応レベルが異なる場合があります。
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
HTTP の Clear-Site-Data レスポンスヘッダーは、クライアントに対して、リクエスト元のウェブサイトに関連付けられた特定の種類の閲覧データ(クッキー、ストレージ、キャッシュ)をすべて削除するよう指示します。
これにより、ウェブ開発者は、自身のオリジンに関してブラウザーが保有するデータをより細かく制御できるようになります。
| ヘッダー種別 | レスポンスヘッダー |
|---|
構文
// 単一のディレクティブ
Clear-Site-Data: "cache"
// 複数のディレクティブ(カンマ区切り)
Clear-Site-Data: "cache", "cookies"
// ワイルドカード
Clear-Site-Data: "*"
ディレクティブ
メモ: すべてのディレクティブは引用符で囲まれた文字列の文法に従わなければなりません。二重引用符を含まないディレクティブは無効です。
"cache"-
サーバーが、レスポンス URL のオリジンに関するローカルにキャッシュされたデータ(つまり、ブラウザーキャッシュ、HTTP キャッシュを参照)の消去を望んでいることを示します。 ブラウザーによっては、予備レンダリングページ、バック/フォワードキャッシュ、スクリプトキャッシュ、 WebGL シェーダーキャッシュ、アドレスバーのサジェスト等のようなものも消去します。
"clientHints"-
サーバーが、レスポンス URL のオリジンに対して格納されているすべてのクライアントヒント(
Accept-CHを通じてリクエストされたもの)を消去することを示します。メモ:
"clientHints"データ型に対応しているブラウザーでは、"cache"、"cookies"、"*"のいずれかの型が指定された場合、クライアントヒントもクリアされます。したがって、"clientHints"が必要となるのは、これらの他の型が一切指定されていない場合のみです。 -
サーバーが、レスポンス URL のオリジンに関するすべてのクッキーの消去を望んでいることを示します。これは登録されたドメインにサブドメインを含め影響します。ですから、
https://example.comと同様にhttps://stage.example.comのクッキーも消去されます。 "executionContexts"-
サーバーが、レスポンスのオリジンに関するすべての閲覧コンテキストの再読み込みを望んでいることを示します。 (
Location.reload) "prefetchCache"-
リファラーのオリジンをスコープとする投機ルールの先読みをクリアするために使用されます。
"prerenderCache"-
リファラーのオリジンをスコープとする投機ルールの予備レンダリングをクリアするために使用されます。
"storage"-
サーバーが、レスポンス URL のオリジンに関するすべての DOM ストレージの消去を望んでいることを示します。これは以下のようなストレージ機構を含みます。
- localStorage (
localStorage.clearを実行) - sessionStorage (
sessionStorage.clearを実行) - IndexedDB (それぞれのデータベースに
IDBFactory.deleteDatabaseを実行) - サービスワーカーの登録(登録されたそれぞれのサービスワーカーに対して、
ServiceWorkerRegistration.unregisterを実行) - Web SQL データベース(非推奨)
- FileSystem API のデータ
- プラグインのデータ(
NPP_ClearSiteDataによって消去)
- localStorage (
"*"(ワイルドカード)-
サーバーが、レスポンスのオリジンに関するすべての種類のデータの消去を望んでいることを示します。このヘッダーの将来のバージョンでデータの種類が追加された場合、それも消去します。
例
>ウェブサイトのログアウト
ユーザーがウェブサイトやサービスからログアウトした場合、投機的ナビゲーションの先読みまたは予備レンダリングされたコンテンツを含め、ローカルに保存されたデータを削除することをお勧めします。
これを行うには、Clear-Site-Data ヘッダーを、サイトからのログアウトが正常に完了したことを確認するページ(例えばhttps://example.com/logout)に追加します。
Clear-Site-Data: "cache", "cookies", "storage", "executionContexts", "prefetchCache", "prerenderCache"
クッキーの消去
以下のヘッダーが https://example.com/clear-cookies のレスポンスで配信された場合、同じドメイン https://example.com およびあらゆるサブドメイン(https://stage.example.com など)が消去されます。
Clear-Site-Data: "cookies"
推測のクリア
このヘッダーが https://example.com/change-state.json へのレスポンスとともに配信された場合、同じドメイン https://example.com およびそのサブドメイン(https://stage.example.com など)におけるすべての投機ナビゲーションの予備レンダリングがクリアされます。
Clear-Site-Data: "prerenderCache"
先読みと事前レンダリングの両方の推測をクリアするには、prefetchCache と prerenderCache の両方を送信しなければなりません。
Clear-Site-Data: "prefetchCache", "prerenderCache"
どちらか一方、あるいは両方をクリアする方が適切な場合もあります。
例えば、JavaScript からデータを取得するクライアントサイドレンダリングのアプリケーションでは、状態が変更された際に prerenderCache を使用して事前レンダリングされたページを破棄しつつ、ページのレンダリング(または再事前レンダリング)時に使用するために先読みされた HTML は保持することができます。
一方、先読みされた HTML 文書に古いデータが含まれているものの、対応する事前レンダリングされたページが表示時にデータを更新するように設定されている場合は、prerenderCache を使用する必要はないかもしれませんが、prefetchCache ディレクティブを使用することをお勧めします。そうすることで、将来の事前レンダリングで古い HTML が使用されるのを防ぐことができます。
最後に、先読みされた HTML 文書に古いデータが含まれており、かつ事前レンダリングされたページ上の古いコンテンツも更新されない場合は、prefetchCache と prerenderCache の両方を指定するのが最も適切です。
仕様書
| 仕様書 |
|---|
| Clear Site Data> # header> |