1. SharedArrayBuffer + COOP/COEP 跨域隔离的启用条件
使用 SharedArrayBuffer 需要满足哪些跨域隔离条件?COOP/COEP 应如何配置?无法启用隔离时有哪些降级方案?
- SharedArrayBuffer 只能在跨域隔离上下文中使用
- COOP/COEP 响应头的配置方式与作用
- 无法启用隔离时的能力受限与降级策略
为防范 Spectre 侧信道攻击,浏览器要求 SharedArrayBuffer 只能在跨域隔离(cross-origin isolated)的顶层上下文中创建,判定标志为 window.crossOriginIsolated === true。启用方式:顶层文档返回 COOP: same-origin,把文档与跨源弹出窗口在进程层面隔离;同时返回 COEP: require-corp,强制所有跨源子资源声明 CORS 或 CORP 头,否则加载失败;被嵌入资源可用 CORP: same-origin/cross-origin 声明可被哪些源引用。满足后即可在主线程与 Worker 间共享内存,使用 Atomics 原语及 performance.measureUserAgentSpecificMemory。若因第三方跨源资源无法加头而无法隔离,需降级:改用 postMessage 复制传递数据,或通过同源代理/iframe 聚合资源后再启用隔离,避免依赖 SharedArrayBuffer 的强并行方案。
考察对安全上下文与跨域隔离机制的理解:SharedArrayBuffer 的可用性以 crossOriginIsolated 为门槛,核心是 COOP 与 COEP 响应头的组合配置;同时需掌握无法启用隔离时的工程降级方案,例如改用 postMessage 复制数据或通过同源代理聚合资源,体现对浏览器安全模型与部署约束的完整认知,也是排查共享内存类问题的第一步。
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Resource-Policy: cross-origin