【问题标题】:How to make my site compatible with the upcoming Cross-Origin-Isolation changes for SharedArrayBuffer如何使我的网站与即将到来的 SharedArrayBuffer 跨域隔离更改兼容
【发布时间】:2021-03-25 16:54:26
【问题描述】:

因此,我了解到 Chrome 即将进行更改,以启用 SharedArrayBuffer 的使用,特别是“使您的网站“跨域隔离””。我的站点使用了不符合此要求的外部 API。所以我所做的是,使用子域将使用 SharedArrayBuffer 的代码卸载到 iframe 中,并将所需的标头添加到该页面。现在进一步阅读它,似乎我仍然需要提供带有所需标题的顶级文档,否则我仍然会在控制台中收到警告。

澄清一下,我的网站现在使用以下结构:

  • app.website.com -> 包含完整的应用程序功能
  • service.website.com -> 包含使用 SharedArrayBuffer 的功能

我认为我可以简单地将所需的标头添加到 service.website.com 并且一切都会正常工作,但我仍然收到跨源警告。有什么想法吗?

【问题讨论】:

标签: javascript sharedarraybuffer cross-origin-embedder-policy


【解决方案1】:

SharedArrayBuffer 只能在整个帧链处于跨域隔离的环境中启用。即使你嵌入了使用SharedArrayBuffer的页面,父页面也必须是跨域隔离的。

如果用户体验可用于此目的,一个可能的解决方法是打开一个跨域隔离的弹出窗口。一个警告是跨域隔离页面将无法与其他窗口进行通信。

我知道这很痛苦,但出于安全原因需要跨域隔离。

【讨论】:

  • 除了在弹出窗口或新窗口中打开之外,还有其他方法吗?我面临着完全相同的问题。
  • 这仅适用于 Chrome,不适用于 Firefox,但您可以注册原始试用版以将您的原始设置暂时不受此限制。 Chrome 团队正在努力放宽启用跨域隔离的条件,但暂时你可以申请它以保持 SAB 正常工作。了解更多:developer.chrome.com/blog/enabling-shared-array-buffer
  • 您好,agektmr,您在 web.dev/coop-coep/ 上非常重要的博文对这个主题不是很清楚。它有关于如何隔离 iframe 的说明,一种是像这样打开 iframe:
  • @ZYinMD 感谢您的反馈。我将在文章中添加一些内容来澄清这一点。
  • 请您解释一下为什么它需要整个框架链跨源隔离?我的理解是,只要你在单独的进程中运行 iframe(因为 iframe 本身有 COOP 和 COEP),即使顶层文档没有 COOP 或 COEP,SharedArrayBuffer 也不会引起安全问题。我的理解有什么问题吗?
猜你喜欢
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
相关资源
最近更新 更多