问题标签 [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.

0 投票
2 回答
2211 浏览

node.js - 在 nodejs 中设置 Cross-origin-Embedder-Policy 和 Cross-origin-Opener-Policy 标头

我一直在开发一个网站,使用 express(NodeJS) 作为后端,使用 React 作为前端。由于此错误“ReferenceError:SharedArrayBuffer 未定义”,我遇到了我的应用程序无法在 Firefox 上运行的问题。在网上搜索了一下之后,它似乎与CORS有关。我看到在 Chrome 上也有关于使用 SharedArrayBuffer 的警告。

所以我读到我需要设置这些标题 ̀Cross-Origin-Opener-Policy: same-origin Cross-Origin-Embedder-Policy: require-corp

但我不确定如何做到这一点。在我的后端,我一直在使用 cors 包来设置我的 cors 标头和选项

我也尝试过使用这种方法,但它似乎也不起作用:

我完全错过了什么/误解吗?这是我第一次开发 Web 应用程序,此时我有点迷失了。任何帮助将不胜感激。

谢谢

0 投票
1 回答
89 浏览

google-auth-library - 具有跨源隔离的 Google oAuth2 登录

我有一个依赖 SharedArrayBuffer 的网络应用程序。我在我的网站上打开了跨域隔离,因为谷歌浏览器将在月底之前需要它。

但是,这样做会破坏 Google oAuth2 登录。

我尝试使用跨域标志导入身份验证脚本,但没有成功,因为它依次尝试导入其他被阻止的脚本。

登录.html

哪个是仍然能够使用 google 的 oAuth2 的最佳方法?

谢谢,

0 投票
1 回答
629 浏览

html - 可以使用元标记(http-equiv)设置 COOP/COEP 标头吗?

Cross-Origin-Embedder-Policy和标头可以Cross-Origin-Opener-Policy<meta>标签设置,还是只能用实际的标头设置?如果没有,是否有可以使用元标记设置的标题列表?

以下示例记录crossOriginIsolated: false到控制台。

如果我删除这些http-equiv元标记并使用实际的 HTTP 标头提供文件,那么它会记录crossOriginIsolated: true(在 Chrome 和 Firefox 中)。所以看起来我不能用元标签设置这些标题?

0 投票
2 回答
269 浏览

reactjs - React 在哪里为 SharedArrayBuffer 设置标头?

我正在 Windows10 的 localhost 上运行使用 create-react-app 创建的网站。当我尝试在我的网站中使用 ffmpeg 时,出现错误

“SharedArrayBuffer 未定义”

在火狐中。为了解决这个问题,我到处都看到我必须在“我的顶级文档”中添加 COOP 和 COEP 标题。

问题是我不明白什么是“顶级文档”以及在哪里可以找到它。

我试图添加:

在我的 index.html 中,正如我在某处看到的那样,但它不起作用。

您能否告诉我,我必须在其中添加标题的文件是什么以及在哪里可以找到它?

0 投票
0 回答
263 浏览

browser - 如何启用跨源隔离?(具体情况)

我正在使用 1and1 (ionos) 托管一个网站,它使用导入的 CSS 和 JS 提供一个 HTML 页面。我试图弄清楚如何启用跨源隔离,但我能找到的是我们需要启用某些响应标头:https ://web.dev/cross-origin-isolation-guide/ 。

具体在这些说明中:

在此处输入图像描述

在顶级文档上设置页眉是什么意思?如何做到这一点?我进行了大量搜索,但没有找到有关如何创建/启用这些响应标头的详细信息。

我需要这样做才能在 Firefox 中使用 SharedArrayBuffer。

0 投票
0 回答
86 浏览

google-chrome - YouTube 嵌入式播放器是否支持在跨源隔离站点中加载?

概括

我的网站需要SharedArrayBuffer支持。因此,我们需要在我们的网站上启用跨域隔离,这将主要在 Chrome 92 开始的 Chrome 上贬值。但是,显然,Youtube 嵌入 URL 似乎不支持启用跨域隔离的站点?

下面附上它提到跨域资源策略未设置并被 YouTube 嵌入文档中的跨域隔离阻止。

跨域

我的问题是它实际上不受支持,还是我缺少一个选项来使 youtube embed 在跨域隔离站点上工作?否则,我需要找出其他一些解决方法。

0 投票
1 回答
328 浏览

javascript - 发出跨源请求时出现 SharedArrayBuffer 错误

我们有一个本地开发环境 ( localhost/),它与远程服务器 ( api-dev.host.com) 上的开发 API 进行通信。

在最新的 Chrome 升级后,尝试从 localhost 与远程服务器通信时出现以下控制台错误:

虽然错误中的链接确实显示了一些信息,但我不清楚如何解决这个问题。有没有办法从后端解决这个问题?任何答案将不胜感激。

0 投票
0 回答
193 浏览

nginx - CORS / 跨域隔离 / Google API

我正在尝试将 Zoom Web Video SDK 集成到现有的 Web 应用程序中,出于性能原因,SharedArrayBuffer 已成为要求,为了启用它,站点必须实施跨源隔离。我已经继续向 NGINX 添加了必要的配置,即:

...但当然,这对以前存在的和工作的其他地方产生了连锁反应。Google API 似乎不会再成功加载。

我更改了 index.html 以将 crossorigin 属性添加到 Google API 脚本标记,如下所示:

...并且在我的javascript源代码中(解释并降低复杂性以达到重点):

在该代码中,gapi 和 gapi.client 定义明确,但 init 调用永远不会完成(没有来自 then 或来自 catch 的控制台日志)。查看 devtools 中的网络选项卡显示失败的 GET 请求:

https://content-classroom.googleapis.com/static/proxy.html?usegapi=1& ...以及其他一些我不确定是否敏感的东西,所以我省略了

当您深入了解响应时,它会显示:

要使用来自不同来源的资源,服务器需要在响应头中指定跨域资源策略:

  • Cross-Origin-Resource-Policy: same-site 如果资源和文档是从同一个站点提供的,则选择此选项。
  • Cross-Origin-Resource-Policy:cross-originOnly 如果包含此资源的任意网站不会造成安全风险,请选择此选项。

显然,我无法控制 Google 的服务器做什么,但任何人都可以指导我如何让它正常工作。这只会在本文开头出现我的 NGINX 配置更改时出现问题。

更新

我通过单独获取 API 的发现文档并将结果传递给 gapi.client.init 方法而不是 URL 来部分解决这个问题。但是,虽然我不再在 devtools 的网络选项卡中得到上述结果,但我得到了奇怪/不一致的结果,响应我的 GoogleAuth.signIn 调用时发生了“popup_closed_by_user”和“popup_closed_by_browser”等响应。如果我从 NGINX 中删除标头,它会再次开始按预期运行。我不明白这是怎么回事。

0 投票
1 回答
584 浏览

javascript - 在nodejs中使用ffmpeg上传时,edge和firefox中的sharedarraybuffer错误但在chrome中没有

我在 React.js 中有以下代码,它使用 ffmpeg 转换文件:

上面的代码在 Chrome 中运行良好,文件已成功转换。但是,当我将它带到 Firefox 或 Edge 时,我会收到此错误Unhandled Rejection (ReferenceError): SharedArrayBuffer is not defined

我查找了这个问题,他们说我需要修改我的标题以包含以下内容:

不知道我会如何在我的 JS 代码中这样做?

很想听听你们的想法。

0 投票
1 回答
295 浏览

node.js - 在 reactnode 应用程序中发送 COOP 和 COEP 标头

我有一个基于 Express (Node) 构建的已部署应用程序,并使用内置的 React 前端进行应用程序渲染。

目前,我面临 SharedArrayBuffer 问题,需要传递这些标头才能使我的代码正常工作:

我将在哪里以及如何做这件事?全栈开发新手哈哈。