如何解决YouTube API V3-HTTP引荐来源网址限制
我正在为我的应用程序使用YouTube V3 API,但由于将密钥限制在我列出的网站上,因此我似乎丢失了一些东西。当密钥完全不受限制时,该应用程序可以运行,但是我不希望所有人和他们的妈妈在我的网站上使用我的密钥(我的代码在GitHub上-这是一个普通的JavaScript应用程序,因此我无法隐藏我的密钥)。这是我的获取电话...
fetch(baseURL)
.then(response => response.json())
.then(responseJson => displayYoutubeResults(responseJson))
.catch(err => alert("YouTube's API is acting up again. Site Administrator is dealing with it.",err));
baseURL只是进行提取调用的URL。现在我对密钥有限制了,是否需要某种类型的Header?
解决方法
如果您的应用产生了如下所示的JSON错误响应:
{
"error": {
"code": 403,"message": "Requests from referer \u003cempty\u003e are blocked.","errors": [
{
"message": "Requests from referer \u003cempty\u003e are blocked.","domain": "global","reason": "forbidden"
}
],"status": "PERMISSION_DENIED"
}
}
那么这意味着,实际上,您必须将调用HTTP Referrer
标头的API端点传递为:
fetch(baseURL,{
referrer: "REFERRER"
})
其中REFERRER
将替换为与您在Google开发人员控制台上输入的网址格式之一匹配的值,方法是选中HTTP Referrers (web sites)
部分下的复选框Application restrictions
并添加一个或Website restrictions
小节下的其他网址格式项。
尽管如此,请记住,对API密钥使用这种应用程序限制并不能保护您(
如果您将API密钥HTTP引用程序限制(如上所述)设置为您网站的网址(例如http://www.foobar.com
),则可以使用referrerPolicy
作为
fetch(baseURL,{
referrerPolicy: "origin"
})
您将避免在源代码本身中指定URL http://www.foobar.com
。
但是,referrerPolicy
选项也不是完全安全的,因为有兴趣的第三方如果可以使用有关您应用的其他信息,仍然可以获取您的URL。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。