返回知识中心
身份

清除浏览器网站数据而不越过账户边界

了解清除网站数据会移除什么、会保留什么,以及退出登录或切换账户时如何保护应用会话。

文档中心

想直接进入 身份 文档吗?

这篇文章属于博客内容库。若你要步骤化配置、参考说明和持续更新,请直接进入对应 docs 分区。

简短答案

清除网站数据可以重置一部分本地状态,但它不等于注销账户,也不等于删除服务端记录。浏览器可能保存 Cookie、localStorage、sessionStorage、IndexedDB 数据库、Cache Storage 条目、service worker 注册、权限和 HTTP 缓存。服务端还可能保留已认证会话。Clear-Site-Data 规范定义了来源可以发送的请求,但具体如何执行由浏览器决定。

应当区分三条边界:浏览器状态、应用账户状态和服务端记录。退出登录要结束服务端会话;本地清理要移除选定的账户状态,避免旧账户再次出现。备份、其他设备和其他来源都不属于这次浏览器操作。MDN 的 Clear-Site-Data 说明和 StorageManager API描述的是观察和限制,而不是万能删除器。

三步图:账户会话进入来源范围的清理步骤并到达新会话,服务端失效处理保持独立

什么属于网站数据

Cookie 会随匹配的 HTTP 请求自动发送。删除 Cookie 可能让浏览器不再提供会话标识,但服务端仍须撤销或使会话过期。localStorage 通常会跨越标签页关闭而保留;sessionStorage 属于顶层浏览上下文,通常随其关闭而结束。它们不会自动进入请求,但应用代码仍可能主动读取并发送值。

IndexedDB 用于结构化对象、本地数据库、草稿和离线队列。Cache Storage 常由 service worker 管理,旧缓存可能在更新或退出登录后继续存在。worker 注册、权限和 HTTP 缓存有各自的生命周期。浏览器存储模型指南比较这些机制,service worker 缓存生命周期指南说明缓存所有权和清理。

Clear-Site-Data 只属于一个来源

Clear-Site-Data 响应头来自某个来源。"cache"、"cookies"、"storage" 和 "executionContexts" 等指令表示用户代理可以处理的类别。不同浏览器和版本的支持范围可能不同。account.example 的响应不能删除其他来源或嵌入服务的状态。

因此它是请求,不是证明。应记录来源、指令、浏览器版本和观察到的结果。"storage" 不会删除服务端数据库、备份、其他设备数据或所有内存状态。使用该响应头时,还要配合应用自己的清理代码和服务端会话操作。

退出登录与切换账户

先使服务端会话失效,再删除账户专属的本地状态并重置应用内存。如果服务端操作失败,应显示失败状态,不能把账户标记为已退出。其他标签页可能仍显示旧画面;要通知它们、拒绝过期响应,并在写入前重新检查会话。

即使没有点击退出按钮,切换账户也有同样风险。在加载第二个账户前,移除或隔离第一个账户的令牌、缓存响应、草稿、IndexedDB 数据、离线队列和 worker 缓存。重新加载页面不是清理操作。可见的控制项应说明会移除什么,不要承诺从浏览器控制项删除服务商账户或其他来源的数据。

部分删除与恢复

清理可能被阻止、未被支持,或遗漏某个存储区。应用应把缺少状态视为正常输入,并提供登录页、重新获取数据或明确的恢复路径。不能根据某一个键是否存在来推断用户身份。

清理后的下一次请求应要求有效会话。离线队列可能属于旧账户,应按产品政策暂停或丢弃,不能因为重新联网就以新账户发送。日志只保留最少的成功或失败结果,不记录 Cookie、令牌和内容。

用隔离上下文做授权测试

BotBrowser 提供独立的 BrowserContext,并隔离 Cookie、存储和会话状态,也支持团队用两个获授权的测试账户重复检查退出和切换流程。BotBrowser 不直接控制网站的 Clear-Site-Data 响应、应用清理代码、服务端会话失效、浏览器驱逐策略,也不控制上下文之外的记录。详见多账户隔离文档。

测试时创建两个上下文并使用合成数据,记录浏览器版本和预期存储;在第一个上下文退出后,确认下一次请求需要重新认证;第二个上下文应保留自己的会话。测试隔离不代表服务端已经删除数据。

实用清理清单

  1. 盘点 Cookie、Web Storage、IndexedDB、Cache Storage、worker、权限、HTTP 缓存、内存和离线队列。
  2. 为每项记录所有者、生命周期和账户归属。
  3. 使服务端会话失效,再清理本地状态并通知其他标签页。
  4. 记录 Clear-Site-Data 指令、浏览器版本和结果,为部分覆盖准备回退。
  5. 让下一次导航重新认证,并显示干净状态或记录好的恢复流程。
  6. 用两个标签页、账户切换、worker 更新和第二个授权上下文重复检查。

嵌入式框架可能属于另一个来源并管理自己的 Cookie 和存储,顶层页面不能承诺清除该服务的状态。

把每个值分类为凭据、偏好、离线操作或公共资源,并据此决定撤销、删除、保留还是重新创建。

过期 Cookie 不等于服务端撤销会话。服务端仍应按认证策略拒绝重放的标识符。

清理操作应当幂等。即使数据库、缓存或 worker 不存在,重复执行退出也应得到相同的安全状态。

部署改变清理逻辑时,检查活动 worker 和缓存版本;旧 worker 仍可能拦截响应。

不要根据某个存储键是否存在来判断账户。浏览器可能恢复了状态、被多人使用或已经驱逐数据。

保留说明应区分本地删除和服务端保留,让用户选择退出设备、请求删除或联系服务方。

支持记录只需包括来源、浏览器版本、请求指令和下一次请求结果,不应包含隐私值。

无密码会话、记住设备的 Cookie 和临时上传数据也需要所有者以及缺失时的处理方式。

多个角色共用配置时,应使用独立上下文或明确策略。账户选择器不会自动隔离存储。

同时测试被阻止的存储操作。配额、隐私策略和管理员设置都可能使原本可用的存储不可用。

使用合成测试数据,不要把真实凭据写入清理日志。

清理前说明应用会重新加载、返回登录页,还是保留非敏感偏好。

存储分区指南适用于嵌入内容在不同顶层网站下表现不同的情况;分区不代替账户清理。

隐私策略可能阻止一个本来正确的操作。应把结果作为回退场景,而不是新的身份信号。

来源所有者应决定诊断信息保留多久,以及哪些角色可以读取。

退出后出现空响应可能是正常的,界面要把它和错误区分开。

服务端应在每次敏感操作时检查状态,而不是只在首次加载时检查。

非敏感偏好可以保留,但需要说明;令牌和私有响应必须有明确的生命周期终点。

发布前要用缺少数据的情况测试存储结构升级。

Cookie 属性、缓存代码或会话规则改变后,要重新运行清理验证。

测试记录可以保存类别和结果,但不能保存账户值。

共享设备用户需要可见且易懂的清理控制项。

来源清理不能被描述成账户的法律或合同删除。

每次切换账户都要明确处理等待中的离线队列。

支持文档应说明浏览器、应用和服务端各自的负责人。

恢复流程应保留非敏感工作,但不能重用旧会话。

常见问题

不会。它只移除本地 Cookie;账户、服务端记录和其他设备上的会话仍由服务管理。

Clear-Site-Data: "*" 会删除所有内容吗?

没有这种通用保证。它仍受来源和浏览器实现限制。应测试支持的浏览器并说明实际验证的范围。

新建浏览器上下文等于删除数据吗?

不等于。它是授权测试的隔离起点,不能删除服务端或其他来源的数据。

service worker 会恢复旧数据吗?

如果它保留缓存响应或内存状态,就可能继续提供旧数据。应版本化缓存、限制账户数据,并验证退出后的下一次请求。

清理失败时应显示什么?

显示登录、重试或清晰的恢复路径。如果服务端失效尚未完成,不要声称所有数据都已删除。

来源

#网站数据#账户边界#Cookie#浏览器存储

让 BotBrowser 从研究走向生产

先用这些指南理解模型,再进入跨平台验证、隔离上下文和面向规模化的浏览器部署。