问题标签 [cross-origin-opener-policy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - Cross-Origin-Embedder-Policy:如何只允许某些域?
在一个网站上,我必须在我的网站上嵌入一个需要以下标头的 iframe,因为它需要 SharedArrayBuffer 功能:
不幸的是,我的页面中仍然需要的第 3 方服务 IFRAME 不再加载。即使打开了嵌入式策略,有没有办法允许第三方域?
谢谢。达里奥。
next.js - 有没有办法使用 Google Adsense 进行跨源隔离?
我正在开发一个使用依赖的网站SharedArrayBuffer
,要使用SharedArrayBuffer
您的网站需要跨源隔离,这意味着您的服务器响应需要包含以下标头:
我正在使用 next.js 并且标头似乎正在工作,因为我可以使用crossOriginIsolated
全局变量检查跨源隔离。
似乎它正在破坏 Google Adsense,因为它给了我这些错误。
有任何想法吗?
提前致谢。
firebase - 跨域隔离模式下的 Firebase 身份验证?
我正在开发一个 Web 应用程序,它使用 Emscripten 的多线程 WASM 运行计算密集型代码,因此需要 SharedArrayBuffers。仅当我的应用程序处于跨源隔离模式时才有效。为了实现这一点,我必须在我的应用程序上设置以下标题:
现在,我想在我的项目中使用 Firebase - 第一步是集成 Firebase 的 Auth。现在,我正在使用它firebaseui
来处理登录流程。不幸的是,这不起作用,当我在浏览器中启动登录流程时,我可以在 DevTools 中看到以下消息:
除了网络选项卡中的错误之外,我没有任何迹象表明发生了错误(即没有未捕获的异常)。没有 COOP/COEP 标头,一切正常。
有没有办法可以在跨域隔离模式下使用 Firebase 的身份验证?
webassembly - 是否可以在普通页面中嵌入跨域隔离的 iframe?
换句话说,如果我不能sharedArrayBuffer
在我的主站点中使用,我可以打开一个 iframe 并sharedArrayBuffer
在 iframe 内使用吗?
2021 年 3 月有人问过类似的问题,当时接受的答案是“否”。但是,最近的google blogpost似乎暗示并非如此,所以我想再问一次。
所以我想在我的站点中使用一些带有 sharedArrayBuffer 的 wasm,但是让它跨域隔离是不切实际的,所以我创建了另一个站点https://my-wasm-function.app
,它是跨域隔离的。我希望将其用作 iframe,并通过postMessage
.
但是,我发现一旦它作为 iframe 嵌入,它就会失去隔离状态。
博文有一些关于如何隔离 iframe 的模糊说明,一个是添加标题(我认为是在andCross-Origin-Resource-Policy: cross-origin
之上),我试过了,没有用。另一种是像这样打开iframe:,我也试过了,也没有用。COOP
COEP
<iframe allow="cross-origin-isolated">
sharedarraybuffer - 什么是顶级文件?(未定义 sharedArrayBuffer )
我打算用sharedArrayBuffer
. 我发现如果没有建立交叉隔离,就无法使用。
在文档中,
Cross-Origin-Opener-Policy: same-origin
和
Cross-Origin-Embedder-Policy: require-corp
都应该在顶级文档中设置,但不知道顶级文档是什么以及如何设置。
我应该怎么办?
sandbox - Chrome 扩展沙盒 iFrame 中的 SharedArrayBuffer
我试图SharedArrayBuffer
通过设置一个跨域隔离的文档来使用。但是,由于它位于 Google Chrome 扩展程序中并且我需要 WebAssembly,因此我需要在沙盒页面中运行它。
我有一个沙盒页面,在 manifest.json 中定义为这样
而且我还使用 COOP 和 COEP 启用了跨域隔离。
除了使用这个sandbox.html
脚本之外什么都不做:
然后我有一个outer.html
嵌入sandbox.html
iFrame 的页面。
当我打开时outer.html
,我收到消息“BAD am not crossOriginIso”,即sandbox.html
iFrame 内的文档不是跨域隔离的(我不能使用SharedArrayBuffer
)。
有没有办法在内部文档被沙盒化的 iFrame 中使用清单 v3 在 Chrome 扩展中启用跨域隔离(通过manifest.json
)。
也许更具体地说,如何featurePolicy.allowedFeatures()
向沙盒 iFrame 添加更多内容(它是在 Chrome 扩展程序的沙盒中manifest.json
,而不是sandbox
属性)。
我注意到以下几点:
- 没有iFrame直接打开
sandbox.html
,页面是跨域隔离的。 - 删除该
sandbox
属性会manifest.json
导致 iframe 内的文档被跨域隔离。 - 在 iFrame 内执行
document.featurePolicy.allowedFeatures()
会提供非常小的功能列表(并且不包括cross-origin-isolated
)。这个列表比sandbox.html
直接打开时执行相同的命令要小很多。
webassembly - 将 SharedArrayBuffer 与第三方 JS 一起使用时遇到问题
我添加了响应头(“Cross-Origin-Opener-Policy”、“same-origin”)以使用 SharedArrayBuffer(以支持 webassembly)。但是现在我在我的页面中添加第三方 JS 时遇到了麻烦,这将被跨域隔离所阻止。将第三方 JS 与 webassembly 一起使用的任何解决方法?
javascript - 使用 Cross-Origin-Opener-Policy 使 window.close 在 Firefox 上工作:same-origin
我有一个 SiteA,它在弹出窗口中打开 SiteB,SiteB 重定向回具有window.close
. SiteB 已Cross-Origin-Opener-Policy: same-origin
设置。问题是 window.close 在 Firefox 中不起作用(在 Chrome 中起作用)。
流程是这样的:
站点A/1.html ->
var openedWindow = window.open(SiteA/2.html)
-> SiteA/2.html 重定向到 SiteB
-> SiteB 有
Cross-Origin-Opener-Policy: same-origin
-> SiteB 重定向到 SiteA/3.html(仍在弹出窗口中)
-> 站点A/3.html ->
window.close()
cross-origin
如果 SiteB 中的 Cross-Origin-Opener-Policy 设置为或完全删除,这仅适用于 Firefox 。
我尝试在 3.html 中代替 window.close,openedWindow.close
在 1.html 中使用,但这也没有用。
我尝试了 window.open('','_parent','') 技巧,但也没有用。
有没有办法做到这一点?
http - CORP 使用 CSP 沙箱集阻止明显同源请求
想象一个有两个文档的站点:index.html
和test.jpg
,都位于根目录。index.html
有以下内容。
如果没有安全标头,这工作得很好。但是,使用这些标题index.html
:
这个标题在test.jpg
:
test.jpg
Chrome 98 将不再加载它。它net::ERR_BLOCKED_BY_RESPONSE.NotSameOrigin 200
在控制台中报告。
添加以下标头index.html
将导致图像也被 Firefox 97 阻止:
(我知道这是很多指令,但我试图将它们一分为二,但无法弄清楚。)
What is happening here? https://example.com
and https://example.com/test.jpg
are the same origin, aren't they? Explicitly navigating to https://example.com/index.html
also blocks the loading of test.jpg
. What is missing from my understanding of same-origin? Why is there a difference between Chrome and Firefox's handling? Why does adding CSP cause Firefox to start blocking the requests for test.jpg
?
In case I missed something, here are the complete set of headers for each request (from cURL):