我正在使用 Google JavaScript API 在网络应用程序中获取 Google 联系人,并且我想检索他们的照片。
我正在做这样的事情(大大简化):
var token; // let's admit this is available already
function getPhotoUrl(entry, cb) {
var link = entry.link.filter(function(link) {
return link.type.indexOf("image") === 0;
}).shift();
if (!link)
return cb(null);
var request = new XMLHttpRequest();
request.open("GET", link.href + "?v=3.0&access_token=" + token, true);
request.responseType = "blob";
request.onload = cb;
request.send();
}
function onContactsLoad(responseText) {
var data = JSON.parse(responseText);
(data.feed.entry || []).forEach(function(entry) {
getPhotoUrl(e, function(a, b, c) {
console.log("pic", a, b, c);
});
});
}
但我在 Chrome 和 Firefox 中都收到此错误:
跨源请求被阻止:同源策略不允许读取远程资源
当查看来自提要/照片端点的响应标头时,我可以看到Access-Control-Allow-Origin: *
未发送,因此出现 CORS 错误。
注意Access-Control-Allow-Origin: *
到达时发送feeds/contacts
端点,因此允许跨域请求。
这是一个错误,还是我错过了他们文档中的某些内容?
假设您只需要“个人资料图片”,请尝试通过将完整的 URL 设置为src
的元素<img>
标签(带有?access_token=<youknowit>
在最后)。
例如。使用 Angular.js
<img ng-src="{{contact.link[1].href + tokenForImages}}" alt="photo" />
总体而言,就 CORS 而言,从 JS 访问 API 似乎有不少地方无法按预期工作。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)