Clear-Site-Data 头

基线 2023 *
新推出

自 2023 年 9 月起,此功能可在最新的设备和浏览器版本上使用。此功能可能无法在较旧的设备或浏览器上使用。

* 此特性的某些部分可能存在不同级别的支持。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

HTTP Clear-Site-Data 响应头向客户端发送信号,指示其应删除与请求网站关联的特定类型(cookies、存储、缓存)的所有浏览数据。它允许 Web 开发人员更好地控制浏览器为其源存储的数据。

头类型 响应头
禁止请求头

语法

http
// 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"

"cookies"

服务器发出信号,指示客户端应删除响应 URL 源的所有 cookie。HTTP 认证凭据也会被清除。这会影响整个注册域,包括子域。因此,https://example.comhttps://stage.example.com 的 cookie 都将被清除。

"executionContexts" 实验性

服务器发出信号,指示客户端应重新加载响应源的所有浏览上下文(Location.reload)。

"prefetchCache" 实验性 非标准

用于清除作用于 referrer 源的推测规则预取。

"prerenderCache" 实验性 非标准

用于清除作用于 referrer 源的推测规则预渲染。

"storage"

服务器发出信号,指示客户端应删除响应 URL 源的所有 DOM 存储。这包括以下存储机制:

"*"(通配符)

服务器发出信号,指示客户端应清除响应源的所有类型数据。如果此头未来版本中添加更多数据类型,它们也将被此通配符覆盖。

示例

退出网站

如果用户退出您的网站或服务,您可能希望删除本地存储的数据,包括为推测导航预取或预渲染的任何内容。为此,请将 Clear-Site-Data 头添加到确认成功退出网站的页面(例如,https://example.com/logout)。

http
Clear-Site-Data: "cache", "cookies", "storage", "executionContexts", "prefetchCache", "prerenderCache"

清除 cookie

如果此头随 https://example.com/clear-cookies 的响应一起交付,则同一域 https://example.com 和任何子域(如 https://stage.example.com 等)上的所有 cookie 都将被清除。

http
Clear-Site-Data: "cookies"

清除推测

如果此头随 https://example.com/change-state.json 的响应一起交付,则同一域 https://example.com 和任何子域(如 https://stage.example.com)上的所有推测导航预渲染都将被清除。

http
Clear-Site-Data: "prerenderCache"

要同时清除预取和预渲染推测,必须同时发送 prefetchCacheprerenderCache

http
Clear-Site-Data: "prefetchCache", "prerenderCache"

在某些情况下,清除其中一个、另一个或两者都是合适的。

例如,一个从 JavaScript 中获取数据的客户端渲染应用程序可能会在状态更改时使用 prerenderCache 来丢弃预渲染页面,但保留预取的 HTML 以在页面渲染(或再次预渲染)时使用。

另一方面,如果预取的 HTML 文档包含过期数据,但相应的预渲染页面设置为在显示时刷新数据,则您可能不需要使用 prerenderCache,但您可能希望使用 prefetchCache 指令:这样过期的 HTML 就不会在未来的预渲染中使用。

最后,如果预取的 HTML 文档包含过期数据,并且在预渲染页面上也不会刷新过期内容,那么同时指定 prefetchCacheprerenderCache 是最合适的。

规范

规范
清除站点数据
#

浏览器兼容性

另见