问题标签 [cross-origin-resource-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 投票
1 回答
246 浏览

amazon-web-services - AWS REST API Gives 403:使用 API 资源策略和前端 (HTML+Javascript) 时访问被拒绝错误

我不确定这里的确切问题是什么,但如果有人可以在这里给我一些建议,那将非常有帮助?

我有一个发布方法 AWS rest API ok,并且我已将它与 AWS API 资源策略集成,该策略允许除某些特定 IP 地址之外的所有 IP 地址访问此 API,以下是我正在使用的资源策略。

当我使用 POSTMAN 或在任何 IDE 上运行的一些 Python 脚本测试它时,整个设置工作得非常好,但是当我将此 POST API 与我的前端(HTML + JAVASCRIPT)集成时,它给了我 403:访问被拒绝错误

以下是 API 对浏览器的响应:

使用的资源策略:

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 投票
0 回答
630 浏览

javascript - 在跨源隔离站点中使用 Youtube iframe api

我的项目使用多个线程和SharedArrayBuffer。在 Firefox 中,要使用 SharedArrayBuffer,您的站点需要跨源隔离。这也将出现在 chrome 和 edge 上。所以我通过从 node.js 服务器设置这些标头来隔离站点:

这解决了 Firefox 中的问题并删除了 chrome 中的警告,一切都按预期工作。

现在我也在网站上使用youtube iframe api。由于跨源隔离,视频被阻止。它在禁用跨源隔离时起作用。有什么办法让它工作吗?

在此处输入图像描述

youtube 上的这段视频告诉我,我必须设置一个公司标题或其他东西才能让它工作,但我不明白。

0 投票
0 回答
45 浏览

javascript - 如何为firebase实时数据库js文件添加标题值?

我的网站在 Firebase 实时数据库和跨源资源政策方面存在问题。我的站点已经配置了跨源资源策略标头,并且正在为我站点中的每个资产(js、css、html 等)提供服务。但是现在来自 firebase.io 的 js 脚本被阻止了,因为它没有这个标头。我想问一下,我如何添加这些标题?我应该去 Firebase 控制台的哪个位置?

被阻止脚本的屏幕截图

这是触发问题的一段代码。基本上我初始化Server对象然后调用changeDb,然后调用checkAuthor(出现问题的地方):

阻塞请求的调用堆栈

0 投票
1 回答
276 浏览

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 标头)一起使用?

0 投票
1 回答
523 浏览

node.js - 在已部署的应用程序上播放来自 s3 的文件时的跨源资源策略问题

我在 Heroku 上部署了一个应用程序,允许我播放音频文件。你可以在这里查看https://telecurve.herokuapp.com/manage。在我在 Heroku 中播放文件没有问题之前,但在我修改了我的 server.js 文件(我的应用程序是一个使用内置的 Create React 应用程序部署的 Express 应用程序)之后,我收到了这个错误。您可以尝试播放音频文件并查看响应。但是,我仍然可以使用下载按钮从 s3 下载文件并且没有问题。

以下是一些相关代码:

这是我添加的 server.js 中的特殊更改:

也许我需要为 s3 添加一个额外的标题?

我最近也删除了这段代码:

这是我在后端用于生成要播放/下载的 URL 的后端预签名方法:

然后我使用这个 url,创建一个新的音频对象var audio = new Audio(url)并播放它。

让我知道您是否发现任何问题或我遗漏了什么。

0 投票
0 回答
45 浏览

javascript - 获取对 aws 存储桶的请求不工作但在浏览器中工作

我正在尝试在 s3 中向此 url 发出 GET 请求:

它是预先签名的,因此它可能会在您打开它时过期。目前,当我在浏览器中单击它时,它可以正常下载。但是,当我尝试向它发出获取请求并在我的代码中播放它时。我收到网络错误:

在网络中,它说我必须指定跨源资源策略。我怎样才能做到这一点?这是我现在添加的跨源资源策略的 server.js。

我究竟做错了什么?

0 投票
1 回答
53 浏览

java - 我们可以在生产中使用 CrossOrigin *(通配符)吗

使用特定的交叉原点和放 * 有什么区别?

例如

如果是 * 是否有任何安全问题?

0 投票
0 回答
293 浏览

openlayers - 使用openlayers cors在geoserver中的wms层

我正在尝试使用 openlayers 和 geoserver 创建地图。我也启用了cors。

雄猫配置:

我的代码

我得到以下错误:

为什么我得到 net::ERR_BLOCKED_BY_RESPONSE.NotSameOriginAfterDefaultedToSameOriginByCoep 错误?

0 投票
0 回答
47 浏览

firebase - 跨域隔离模式下的 Firebase 身份验证?

我正在开发一个 Web 应用程序,它使用 Emscripten 的多线程 WASM 运行计算密集型代码,因此需要 SharedArrayBuffers。仅当我的应用程序处于跨源隔离模式时才有效。为了实现这一点,我必须在我的应用程序上设置以下标题:

现在,我想在我的项目中使用 Firebase - 第一步是集成 Firebase 的 Auth。现在,我正在使用它firebaseui来处理登录流程。不幸的是,这不起作用,当我在浏览器中启动登录流程时,我可以在 DevTools 中看到以下消息:

开发工具错误

在此处输入图像描述

除了网络选项卡中的错误之外,我没有任何迹象表明发生了错误(即没有未捕获的异常)。没有 COOP/COEP 标头,一切正常。

有没有办法可以在跨域隔离模式下使用 Firebase 的身份验证?