Cross-Origin-Opener-Policy 设置后为什么 window.open 无法访问新窗口?

A. 慧娇 阅读 11

我在项目里加了 Cross-Origin-Opener-Policy: same-origin 响应头,结果发现用 window.open 打开同域页面后,拿不到新窗口的引用了,报错说“Blocked a frame with origin…”。

明明是同一个域名,按理说应该能通信才对啊?我试过把 header 改成 unsafe-none 就正常了,但这样又不安全。是不是我哪里理解错了?

const popup = window.open('/dashboard', '_blank');
// 后续想调用 popup.postMessage 或读取 popup.location
// 但直接报错:Uncaught DOMException: Blocked a frame with origin...
我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
令狐斐然
Cross-Origin-Opener-Policy: same-origin 需要配合 Cross-Origin-Embedder-Policy: require-corp 使用才行。加个响应头 Cross-Origin-Embedder-Policy: require-corp 应该就行了。
点赞
2026-03-20 16:00