上传到 YouTube API 时缺少"访问控制允许来源"



几年来,我们已经使用一些自定义JavaScript代码通过YouTube API成功上传视频。该代码基于Google(cors_upload.js(提供的一些示例。这不是我们经常使用的东西,只是每隔几周。

几周前一切正常,但我注意到最近事情停止了工作。我们登录很好,我们获取频道信息很好。但是当我们开始上传(通过 XHR POST 发生(时,我们收到一个 CORS 错误:

跨源请求被阻止:同源策略不允许在 https://www.googleapis.com/upload/youtube/v3/videos?part=snippet%2Cstatus&uploadType=resumable 读取远程资源。(原因:缺少 CORS 标头"访问控制-允许源"(。

但是我们没有在代码或服务器上更改任何内容,似乎我们正在做Google记录的所有必要事情,以使他们的服务使用所需的CORS标头进行响应。

根据开发控制台,XHR 请求实际上生成了 2 个网络请求。首先,我看到一个"选项":

Request URL:https://www.googleapis.com/upload/youtube/v3/videos?part=snippet%2Cstatus&uploadType=resumable
Request Method:OPTIONS
Remote Address:172.217.9.42:443

这实际上确实返回了我期望的"访问控制允许来源"标头。但是,紧随其后的是"POST"请求:

Request URL:https://www.googleapis.com/upload/youtube/v3/videos?part=snippet%2Cstatus&uploadType=resumable
Request Method:POST
Remote Address:172.217.9.42:443

根据开发控制台,它没有设置"访问控制允许来源"标头集。所以,我理解为什么我的浏览器拒绝东西。似乎谷歌破坏了一些东西。

我确实在我们管理的服务器上成功部署了NodeJS"CORS Anywhere"服务器。因此,我可以使用它来解决此问题。但这真的不是解决问题的正确方法。由于以编程方式上传视频并不是我们经常做的事情,因此这种解决方法对我们来说可能就足够了。我很想了解出了什么问题或如何解决。所以,如果有人使用YouTube API和JavaScript成功上传视频,我很想听听。希望这将有助于教育其他人,如果他们遇到这个问题。

同样的问题刚刚开始发生在我的服务上。

这似乎是googleapis上的一个错误,或者youtube.v3.apis的政策发生了变化并开始阻止某些客户端。

谷歌已经解决了这个问题,我们长期存在的代码又恢复了工作,没有任何变化。

以下是跟踪的问题: https://issuetracker.google.com/issues/158718687

这里也一样。我没有解决方案,只有一个解决方法,我希望他们尽快修复它。您可以在镶边中禁用 CORS 安全检查。使用 --disable-web-security 运行 chrome.exe,并将用户数据目录临时设置为另一个位置,使用以下参数和所需的文件夹 --user-data-dir=c:/anyfolderName/'

出于安全原因,您应该仅在必须禁用 Web 安全,并在完成后切换回来。

我不知道为什么这会被否决,因为它帮助我绕过了。现在谷歌解决了这个问题,无需再使用此解决方法。但当出现另一个 CORS 问题时,也许它会有所帮助......

最新更新