You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用window.open打开跨域弹窗且弹窗设COOP:same-origin-allow-popups,opener能否访问?

问题解答:跨源opener能否访问设置了Cross-Origin-Opener-Policy: same-origin-allow-popups的弹窗?

结论

不能访问。

详细解释

Cross-Origin-Opener-Policy(COOP)的核心作用是管控浏览器窗口之间的opener引用关系,不同的COOP值对应不同的隔离规则:

  • same-origin-allow-popups的核心生效逻辑是:当设置该值的页面作为「打开方(opener)」时,它可以保留对自己打开的、未设置COOP或COOP为unsafe-none的跨源窗口的引用;
  • 但如果是被打开的弹窗页面设置了same-origin-allow-popups,规则指向会反转:弹窗会只接受来自同源页面的opener引用,任何跨源的opener都会被强制切断引用关系。

回到你的场景:恶意站点(跨源opener)调用window.open打开设置了same-origin-allow-popups的弹窗时,弹窗的COOP策略会直接隔离跨源的opener。此时opener通过window.open返回的窗口对象,无法访问弹窗的任何属性或方法(大部分属性会返回null或触发跨源错误)。

补充说明

MDN中关于same-origin-allow-popups的描述,确实是针对「打开方页面设置该COOP」的场景。而被打开页面的COOP设置,决定的是它是否允许外部opener保持引用——same-origin-allow-popups对被打开页面来说,等同于只信任同源的打开方,跨源打开方完全无法建立有效引用。

内容的提问来源于stack exchange,提问作者Michal Charemza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:12:38