问题标签 [cross-origin-embedder-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.
html - 可以使用元标记(http-equiv)设置 COOP/COEP 标头吗?
Cross-Origin-Embedder-Policy
和标头可以Cross-Origin-Opener-Policy
用<meta>
标签设置,还是只能用实际的标头设置?如果没有,是否有可以使用元标记设置的标题列表?
以下示例记录crossOriginIsolated: false
到控制台。
如果我删除这些http-equiv
元标记并使用实际的 HTTP 标头提供文件,那么它会记录crossOriginIsolated: true
(在 Chrome 和 Firefox 中)。所以看起来我不能用元标签设置这些标题?
reactjs - React 在哪里为 SharedArrayBuffer 设置标头?
我正在 Windows10 的 localhost 上运行使用 create-react-app 创建的网站。当我尝试在我的网站中使用 ffmpeg 时,出现错误
“SharedArrayBuffer 未定义”
在火狐中。为了解决这个问题,我到处都看到我必须在“我的顶级文档”中添加 COOP 和 COEP 标题。
问题是我不明白什么是“顶级文档”以及在哪里可以找到它。
我试图添加:
在我的 index.html 中,正如我在某处看到的那样,但它不起作用。
您能否告诉我,我必须在其中添加标题的文件是什么以及在哪里可以找到它?
browser - 如何启用跨源隔离?(具体情况)
我正在使用 1and1 (ionos) 托管一个网站,它使用导入的 CSS 和 JS 提供一个 HTML 页面。我试图弄清楚如何启用跨源隔离,但我能找到的是我们需要启用某些响应标头:https ://web.dev/cross-origin-isolation-guide/ 。
具体在这些说明中:
在顶级文档上设置页眉是什么意思?如何做到这一点?我进行了大量搜索,但没有找到有关如何创建/启用这些响应标头的详细信息。
我需要这样做才能在 Firefox 中使用 SharedArrayBuffer。
google-chrome - YouTube 嵌入式播放器是否支持在跨源隔离站点中加载?
概括
我的网站需要SharedArrayBuffer支持。因此,我们需要在我们的网站上启用跨域隔离,这将主要在 Chrome 92 开始的 Chrome 上贬值。但是,显然,Youtube 嵌入 URL 似乎不支持启用跨域隔离的站点?
下面附上它提到跨域资源策略未设置并被 YouTube 嵌入文档中的跨域隔离阻止。
我的问题是它实际上不受支持,还是我缺少一个选项来使 youtube embed 在跨域隔离站点上工作?否则,我需要找出其他一些解决方法。
javascript - 发出跨源请求时出现 SharedArrayBuffer 错误
我们有一个本地开发环境 ( localhost/
),它与远程服务器 ( api-dev.host.com
) 上的开发 API 进行通信。
在最新的 Chrome 升级后,尝试从 localhost 与远程服务器通信时出现以下控制台错误:
虽然错误中的链接确实显示了一些信息,但我不清楚如何解决这个问题。有没有办法从后端解决这个问题?任何答案将不胜感激。
javascript - 如何防止脚本从另一个目录下载数据?
https://example.com/private/data.json上有一个脚本,它仅将 JSON 返回给已登录的用户
(如果您的会话中有正确的条目,服务器仅返回 JSON)
在https://example.com/private/script.js是这个简单的脚本,它下载 data.json 并在控制台中打印它
假设有人将相同的脚本复制到多个位置。例如:
- https://example.com/script.js
- https://example.com/anything/script.js
- https://example.com/anything/else/script.js
我的问题
- 即使您已登录,我也想阻止从https://example.com/private/script.js以外的其他脚本下载 data.json
- 服务器应该返回什么标头、Content-Security-Policy、content-policy(或其他任何内容),以便浏览器只能从运行在https://example.com/private/script.js的脚本中列出此 JSON,但可以不在脚本https://example.com/script.js或https://example.com/anything/script.js中列出它?
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 中删除标头,它会再次开始按预期运行。我不明白这是怎么回事。
javascript - 在跨源隔离站点中使用 Youtube iframe api
我的项目使用多个线程和SharedArrayBuffer。在 Firefox 中,要使用 SharedArrayBuffer,您的站点需要跨源隔离。这也将出现在 chrome 和 edge 上。所以我通过从 node.js 服务器设置这些标头来隔离站点:
这解决了 Firefox 中的问题并删除了 chrome 中的警告,一切都按预期工作。
现在我也在网站上使用youtube iframe api。由于跨源隔离,视频被阻止。它在禁用跨源隔离时起作用。有什么办法让它工作吗?
youtube 上的这段视频告诉我,我必须设置一个公司标题或其他东西才能让它工作,但我不明白。
google-chrome - 添加 COEP 标头后,Recaptcha V2 无法正常工作(跨源隔离)
我正在将 SharedArrayBuffer 用于其中一个 webapp 中的一些功能。在 Chrome 版本 92 上,我已按照此处的说明启用跨源隔离,并将以下标题添加到根页面和wasm
文件。
之后wasm
文件被成功加载。
但现在我无法添加ReCaptchaV2。获取主脚本的第一个请求成功https://www.google.com/recaptcha/api.js...
,但随后的 iframe 加载https://www.google.com/recaptcha/api2/anchor...
url 被 Chrome 阻止。(原因This resource needs Cross-Origin-Resource-Policy: same-site/cross-origin header
:)
暂时避免此问题的一种方法可能是从 Chrome 获取令牌,以SharedBufferArray
通过获取试用令牌并使用它来允许使用。参考https://developer.chrome.com/blog/enabling-shared-array-buffer/#origin-trial。但这可能不是一个可扩展的事情,因为我有几个来源要处理。
有没有其他方法可以将 ReCaptcha 与跨源隔离(COEP 标头)一起使用?