Clear-Site-Data 头
基线 2023 *
新推出
HTTP Clear-Site-Data 响应头向客户端发送信号,指示其应删除与请求网站关联的特定类型(cookies、存储、缓存)的所有浏览数据。它允许 Web 开发人员更好地控制浏览器为其源存储的数据。
语法
// Single directive
Clear-Site-Data: "cache"
// Multiple directives (comma separated)
Clear-Site-Data: "cache", "cookies"
// Wild card
Clear-Site-Data: "*"
指令
注意:所有指令都必须符合 带引号字符串语法。不包含双引号的指令无效。
"cache"-
服务器发出信号,指示客户端应删除响应 URL 源的本地缓存数据(浏览器缓存,请参阅 HTTP 缓存)。根据浏览器不同,这可能还会清除预渲染页面、前进/后退缓存、脚本缓存、WebGL 着色器缓存或地址栏建议等内容。
"clientHints"实验性-
指示服务器将删除为响应 URL 源存储的所有客户端提示(通过
Accept-CH请求)。注意:在支持
"clientHints"数据类型的浏览器中,当指定"cache"、"cookies"或"*"类型时,客户端提示也会被清除。因此,只有在未指定这些其他类型的情况下才需要"clientHints"。 -
服务器发出信号,指示客户端应删除响应 URL 源的所有 cookie。HTTP 认证凭据也会被清除。这会影响整个注册域,包括子域。因此,
https://example.com和https://stage.example.com的 cookie 都将被清除。 "executionContexts"实验性-
服务器发出信号,指示客户端应重新加载响应源的所有浏览上下文(
Location.reload)。 "prefetchCache"实验性 非标准-
用于清除作用于 referrer 源的推测规则预取。
"prerenderCache"实验性 非标准-
用于清除作用于 referrer 源的推测规则预渲染。
"storage"-
服务器发出信号,指示客户端应删除响应 URL 源的所有 DOM 存储。这包括以下存储机制:
- localStorage(执行
localStorage.clear), - sessionStorage(执行
sessionStorage.clear), - IndexedDB(对于每个数据库执行
IDBFactory.deleteDatabase), - Service worker 注册(对于每个 service worker 注册,执行
ServiceWorkerRegistration.unregister), - Web SQL 数据库(已弃用),
- FileSystem API 数据,
- 插件数据(通过
NPP_ClearSiteData清除 Flash 数据)。
- localStorage(执行
"*"(通配符)-
服务器发出信号,指示客户端应清除响应源的所有类型数据。如果此头未来版本中添加更多数据类型,它们也将被此通配符覆盖。
示例
退出网站
如果用户退出您的网站或服务,您可能希望删除本地存储的数据,包括为推测导航预取或预渲染的任何内容。为此,请将 Clear-Site-Data 头添加到确认成功退出网站的页面(例如,https://example.com/logout)。
Clear-Site-Data: "cache", "cookies", "storage", "executionContexts", "prefetchCache", "prerenderCache"
清除 cookie
如果此头随 https://example.com/clear-cookies 的响应一起交付,则同一域 https://example.com 和任何子域(如 https://stage.example.com 等)上的所有 cookie 都将被清除。
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 是最合适的。
规范
| 规范 |
|---|
| 清除站点数据 # 头 |
浏览器兼容性
加载中…