问题标签 [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.
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 对浏览器的响应:
使用的资源策略:
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 标头)一起使用?
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)
并播放它。
让我知道您是否发现任何问题或我遗漏了什么。
javascript - 获取对 aws 存储桶的请求不工作但在浏览器中工作
我正在尝试在 s3 中向此 url 发出 GET 请求:
它是预先签名的,因此它可能会在您打开它时过期。目前,当我在浏览器中单击它时,它可以正常下载。但是,当我尝试向它发出获取请求并在我的代码中播放它时。我收到网络错误:
在网络中,它说我必须指定跨源资源策略。我怎样才能做到这一点?这是我现在添加的跨源资源策略的 server.js。
我究竟做错了什么?
java - 我们可以在生产中使用 CrossOrigin *(通配符)吗
使用特定的交叉原点和放 * 有什么区别?
例如
如果是 * 是否有任何安全问题?
openlayers - 使用openlayers cors在geoserver中的wms层
我正在尝试使用 openlayers 和 geoserver 创建地图。我也启用了cors。
雄猫配置:
我的代码
我得到以下错误:
为什么我得到 net::ERR_BLOCKED_BY_RESPONSE.NotSameOriginAfterDefaultedToSameOriginByCoep 错误?
firebase - 跨域隔离模式下的 Firebase 身份验证?
我正在开发一个 Web 应用程序,它使用 Emscripten 的多线程 WASM 运行计算密集型代码,因此需要 SharedArrayBuffers。仅当我的应用程序处于跨源隔离模式时才有效。为了实现这一点,我必须在我的应用程序上设置以下标题:
现在,我想在我的项目中使用 Firebase - 第一步是集成 Firebase 的 Auth。现在,我正在使用它firebaseui
来处理登录流程。不幸的是,这不起作用,当我在浏览器中启动登录流程时,我可以在 DevTools 中看到以下消息:
除了网络选项卡中的错误之外,我没有任何迹象表明发生了错误(即没有未捕获的异常)。没有 COOP/COEP 标头,一切正常。
有没有办法可以在跨域隔离模式下使用 Firebase 的身份验证?