我正在使用 Google JavaScript API 在 web 应用程序中获取 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 中都遇到了这个错误:
跨域请求被阻止:同源策略不允许在https://www.google.com/m8/feeds/photos/media/<user_email >/<some_contact_id>?v=3.0&access_token=<obfuscated>读取远程资源. 这可以通过将资源移动到同一域或启用 CORS 来解决。
当查看来自 feeds/photos 端点的响应标头时,我可以看到它Access-Control-Allow-Origin: *
没有发送,因此我得到了 CORS 错误。
请注意,Access-Control-Allow-Origin: *
在到达feeds/contacts
端点时发送,因此允许跨域请求。
这是一个错误,还是我错过了他们文档中的某些内容?