上载到YouTube API时缺少“访问控制允许来源”

时间:2020-06-11 05:07:39

标签: youtube-api cors youtube-data-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标头“ Access-Control-Allow-Origin”缺失)。

但是我们没有更改代码或服务器中的任何内容,似乎我们正在按照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

这实际上会返回我期望的“ access-control-allow-origin”标头。但是,紧随其后的是“ 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

并且根据开发控制台,它没有设置“ access-control-allow-origin”标头。因此,我了解了为什么我的浏览器会拒绝某些东西。好像Google弄坏了东西。

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

3 个答案:

答案 0 :(得分:1)

我的服务刚开始出现相同的问题。

这似乎是googleapis上的错误,或者youtube.v3.apis进行了政策更改并开始阻止某些客户端。

答案 1 :(得分:-1)

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

出于安全原因,只有在必须的情况下才应禁用网络安全,并在完成后再切换回去。

我不知道为什么这会引起反对,因为它帮助我解决了问题。现在,谷歌已解决此问题,无需再使用此替代方法。但是,当另一个CORS问题出现时,它可能会有所帮助...

答案 2 :(得分:-1)

Google已解决了该问题,我们的长期代码无需任何更改即可恢复工作。

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