2012-06-06 12 views
6

Ich mache eine einfache Galerie, die die Fotos von einem Picasa-Konto mit HTML + Javascript.Javascript - Origin http://127.0.0.1 ist nicht erlaubt von Access-Control-Allow-Origin

Zuerst wird die Liste der Alben abgerufen und dann für jedes Album die Liste der Fotos abgerufen. Die erste Abfrage funktioniert gut, aber die andere gibt diesen Fehler zurück im Browser (Chrome):

GET https://picasaweb.google.com/data/entry/base/user/114476218463019618611/albumid/5750459375839674337?alt=json&hl=en_US 404 (nicht gefunden) jquery.js: 8240 XMLHttpRequest nicht https://picasaweb.google.com/data/entry/base/user/114476218463019618611/albumid/5750459375839674337?alt=json&hl=en_US laden. Origin-Datei: // ist nicht zulässig von Access-Control-Allow-Origin.

Dies ist der Code:

  var json_Album_URI = "https://picasaweb.google.com/data/feed/base/" 
       + "user/"  + username 
       + "?alt="  + "json" 
       + "&kind="  + "album" 
       + "&hl="  + "en_US" 
       + "&fields=" + "entry(media:group,id)" 
       + "&thumbsize=" + 104 
       + "&authkey=" + authkey; 

      $.ajax({ 
        type: 'GET', 
        url: json_Album_URI, 
        success : function(resp) { 
          albums = resp.feed.entry; 
        }, 
        dataType: 'json', 
        async: false 
      }); 
      for (var id in albums) { 
        var album = albums[id]; 
        var album_ID = album.id.$t.split('/')[9].split('?')[0]; 
        var json_Photo_URI = "https://picasaweb.google.com/data/feed/base/" 
          + "user/"  + username 
          + "/albumid/" + album_ID 
          + "?alt="  + "json" 
          + "&kind="  + "photo" 
          + "&hl="  + "en_US" 
          + "&fields=" + "entry(media:group)" 
          + "&thumbsize=" + 104 
          + "&authkey=" + authkey; 
        //this is the ajax call that fails 
        $.ajax({ 
          type: 'GET', 
          url: json_Photo_URI, 
          success: function(photos) { 
            console.log(photos); 
          }, 
          dataType: "json", 
          async: false, 
        }); 
      } 

Dank.

EDIT:

ich, dass notica wenn ich die Zeile entfernen:

      + "/albumid/" + album_ID 

Werke (natürlich ohne die erwartete Antwort).

+4

versuchen JSONP statt json für Cross-Domain-Ajax-Aufruf – Nemoy

+2

Hier ist eine JSONP Version, die auf jsFiddle funktioniert: http://jsfiddle.net/ XsfNE /. Nicht sicher, ob dies bedeutet, dass es lokal funktioniert. (Ich habe eine zufällige ID im Internet gefunden, weil Ihre URL eine 404 war.) – pimvdb

Antwort