html怎么做Storage Partitioning隔离_html Storage Partitioning存储分区隔离

酷磊君_3056

酷磊君_3056

2026-05-30

688人浏览

原创

Storage Partitioning 是现代浏览器默认启用的第三方上下文存储隔离机制,将 localStorage 按顶级站点与 iframe 源哈希分区,导致跨源嵌入时数据不互通;需用 Storage Access API 在用户手势下申请临时解除。

html怎么做storage partitioning隔离_html storage partitioning存储分区隔离

Storage Partitioning 是什么,为什么浏览器突然开始隔离你的 localStorage?

它不是你手动加的配置,而是现代浏览器(Chrome 89+、Edge 90+、Safari 15.4+)默认启用的第三方上下文存储隔离机制。当你在 iframe 中加载跨源页面(比如嵌入广告、登录组件、客服 widget),该子页面调用 localStorage.setItem() 时,实际写入的是一个按 top-level site + iframe source 哈希生成的独立分区,而非共享的全局 localStorage。

这意味着:同一域名 A 在主站和被 B 站 iframe 嵌入时,localStorage 数据完全不互通——不是“清空了”,是根本没写到同一个地方。

怎么确认自己正受 Storage Partitioning 影响?

打开 DevTools → Application → Storage → Local Storage,观察左侧来源列表。如果看到类似 https://example.com (partitioned: https://partner-site.com) 或带 hash 后缀的条目(如 https://example.com#1a2b3c),就说明已分区。此时直接在控制台执行:

localStorage.getItem('test')

可能返回 null,哪怕你在 iframe 里刚 set 过——因为当前上下文不是那个分区。

  • 主页面访问 localStorage → 操作主域分区
  • iframe(src="https://third.com")内访问 → 操作 https://third.com 在当前 top-level site 下的专属分区
  • 没有显式 opt-out 机制,无法通过 JS 主动“关闭”分区

哪些场景会意外失效?怎么临时绕过(仅限开发/调试)?

典型翻车点:单点登录 token 同步失败、跨 iframe 的配置缓存丢失、埋点 ID 不一致。生产环境无法绕过,但本地调试可借助 Chrome 启动参数临时禁用:

htmlppt.skill
htmlppt.skill

把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。

下载
--unsafely-treat-insecure-origin-as-secure="http://localhost:3000" --user-data-dir=/tmp/chrome-test --site-per-process --disable-features=PartitionedCookies,StoragePartitioning

注意:这仅用于验证是否为分区导致的问题,不可上线。Safari 和 Firefox 当前行为不同(Safari 更激进,Firefox 尚未默认启用),需单独测试。

  • 不要试图用 postMessage + 主页代理读写 localStorage —— 分区后 iframe 里的 localStorage 对主站不可见
  • 避免依赖 localStorage 做跨上下文状态同步;改用 postMessage 显式传递必要数据
  • 服务端下发的 token、用户身份等关键状态,优先走 URL 参数或 HTTP-only Cookie(配合 SameSite 策略)

长期方案:用 Storage Access API 申请临时解除分区限制

当 iframe 确实需要读写其“原始”存储(例如嵌入的支付组件要复用用户偏好),必须由用户手势触发,并显式请求权限:

if ('storageAccess' in document) {
  try {
    await document.requestStorageAccess();
    // 此时 localStorage / IndexedDB 恢复为非分区行为
    localStorage.setItem('payment-theme', 'dark');
  } catch (err) {
    // 用户拒绝,或不在合法上下文(如无点击事件)
  }
}

关键约束:

  • 必须在用户手势(click/tap)事件处理函数中调用,不能异步延迟
  • 只对当前文档生效,且仅持续到页面卸载或用户关闭 tab
  • Chrome 要求 iframe 的 allow="storage-access-api" 属性已声明
  • Safari 强制要求 top-level site 与 iframe 同一注册域(eTLD+1),否则直接拒绝

分区不是 bug,是隐私保护的必然走向。真正难的不是绕过,而是把“存储即全局”的旧假设,换成“存储需声明、需授权、需显式同步”的新模型。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

7115

7

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

3932

4

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

3590

5

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.01

3619

5

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2023.08.11

5159

6

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

2023.08.11

3541

3

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

3369

3

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

2023.09.01

2908

6

HTML嵌入CSS样式的方法
HTML嵌入CSS样式的方法

HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.20

3068

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 235人学习