Clientseitiger Abruf von Google Contact-Bildern

Ich rufe Google-Kontakte in einer Webanwendung mit der Google JavaScript-API ab und möchte deren Bilder abrufen.

Ich mache so etwas (stark vereinfacht):

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);
    });
  });
}

Aber ich erhalte diesen Fehler sowohl in Chrome als auch in Firefox:

Ursprungsübergreifende Anforderung blockiert: Dieselbe Ursprungsrichtlinie verhindert das Lesen der Remote-Ressource unterhttps://www.google.com/m8/feeds/photos/media/<user_email> / <some_contact_id>? v = 3.0 & access_token = <verschleiert>. Dies kann behoben werden, indem die Ressource in dieselbe Domäne verschoben oder CORS aktiviert wird.

Wenn ich mir die Antwortheader vom Feeds / Fotos-Endpunkt ansehe, sehe ich dasAccess-Control-Allow-Origin: * wird nicht gesendet, daher bekomme ich den CORS-Fehler.

Beachten Sie, dassAccess-Control-Allow-Origin: * wird beim Erreichen der gesendetfeeds/contacts Endpunkt, wodurch domänenübergreifende Anforderungen möglich sind.

Ist das ein Fehler oder habe ich etwas in ihren Dokumenten verpasst?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage