Pobieranie po stronie klienta zdjęć kontaktów Google

Pobieram kontakty google w aplikacji internetowej za pomocą interfejsu API Google JavaScript i chcę pobrać ich zdjęcia.

Robię coś takiego (mocno uproszczone):

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

Ale otrzymuję ten błąd zarówno w Chrome, jak i Firefox:

Zablokowane żądanie pochodzenia: zasada tego samego źródła uniemożliwia odczytanie zdalnego zasobu whttps://www.google.com/m8/feeds/photos/media/<user_email> / <id_kontaktu_some>? v = 3.0 i access_token = <obfuscated>. Można to naprawić, przenosząc zasób do tej samej domeny lub włączając CORS.

Patrząc na nagłówki odpowiedzi z punktu końcowego feeds / photos, widzę toAccess-Control-Allow-Origin: * nie jest wysyłany, stąd pojawia się błąd CORS.

Zauważ, żeAccess-Control-Allow-Origin: * jest wysyłany po osiągnięciufeeds/contacts punkt końcowy, co pozwala na żądania między domenami.

Czy jest to błąd, czy też przegapiłem coś z ich dokumentów?

questionAnswers(2)

yourAnswerToTheQuestion