首页 > 解决方案 > 尝试使用 v3 API 获取 Youtube 视频的数据返回 CORS

问题描述

我正在尝试使用 Angular 使用 V3 youtube 数据 API 获取视频上的数据,我有一个帐户,设置了一个项目,添加了 API 并获得了 API 密钥。一切都在谷歌开发者网站中设置,包括正确的限制。但是当我尝试发送一个简单的 HTTP get 调用时,我得到了 CORS。电话是:

 this.http.get('https://www.googleapis.com/youtube/v3/videos?id=kd1u1ZdJz4w&key=mykey&fields=items(snippet(title))&part=snippet')
            .subscribe(res => {
              console.log(res);
            });

得到错误:

从源“mydomain”访问“https://www.googleapis.com/youtube/v3/videos?id=kd1u1ZdJz4w&key=myket&fields=items(snippet(title))&part=snippet”的 XMLHttpRequest 已被 CORS 政策阻止:对预检请求的响应未通过访问控制检查:响应中“Access-Control-Allow-Credentials”标头的值为“”,当请求的凭据模式为“包含”时,该值必须为“真”。XMLHttpRequest 发起的请求的凭证模式由 withCredentials 属性控制。

当从浏览器直接导航到 API 链接时,我得到了成功的 JSON 响应。

有什么建议么?谢谢!

标签: angulartypescriptcorsyoutube-data-api

解决方案


为了回答我自己的问题,在我的情况下,这是因为我发送了一个授权标头并且它与 API 的响应不符,所以我从获取授权令牌中排除了 url,并在选项中添加了一个 { withCredentials: false } 参数http.get() 函数中的对象。效果很好。


推荐阅读