SORU
29 AĞUSTOS 2010, Pazar


XmlHttpRequest hata: Origin null Access-Control-Allow-Origin tarafından izin verilmiyor

JQuery AJAX desteği ile Flickr ve Seçkin görüntüleri çeken bir sayfa geliştiriyorum.

Flickr tarafı iyi çalışıyor, ama 2 ** belgeler ve e-tablolar için çalışırken, Chrome bir hata konsolu görüyorum:

XMLHttpRequest cannot load http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&callback=processImages&minx=-30&miny=0&maxx=0&maxy=150. Origin null Access-Control-Allow-Origin tarafından izin verilmiyor.

Eğer bir tarayıcı bir URL doğrudan ben sorgulamak gayet iyi çalışıyor. Oluyor, ve ben bunu çözmek için ne yapabilirim? Hatalı benim, sorgu oluşturma, ya da bu Seçkin yapmak istediklerimi engellemek için yaptığı bir şey mi yapıyorum?

Google error message herhangi bir yararlı maçlar gelmedi.

EDİT

İşte bu sorunu gösteren bazı örnek kod:

$().ready(function () {
  var url = 'http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&callback=processImages&minx=-30&miny=0&maxx=0&maxy=150';

  $.get(url, function (jsonp) {
    var processImages = function (data) {
      alert('ok');
    };

    eval(jsonp);
  });
});

24**.

2 DÜZENLEYİN

Bu, onun Darin için teşekkürler.YUKARIDAKİ KODU YANLIŞ.Onun yerine bunu kullanın:

$().ready(function () {
  var url = 'http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&minx=-30&miny=0&maxx=0&maxy=150&callback=?';

  $.get(url, function (data) {
    // can use 'data' in here...
  });
});

CEVAP
19 EYLÜL 2010, Pazar


Kayıt için, anladığım kadarıyla iki sorun vardı:

  1. Bir "" yazın, sizin için sıradan bir XMLHttpRequest kullanarak yani 0**, belirtici. jsonp geçen sen değil miydin Ancak, tarayıcınız çapraz etki alanı sunucu OKed eğer XMLHttpRequest izin KÖŞELERİ (Cross-Origin Resource Sharing) destekledi. Access-Control-Allow-Origin Başlığı devreye giriyor.

  2. :// Dosya bir URL ile çalışan yazmışsın inanıyorum. KÖŞELERİ başlıkları etki alanları arası bir XHR TAMAM olduğunu bildirmek için iki yol vardır. Bir göndermek Access-Control-Allow-Origin: * (ki, olsaydın ulaşan Flickr üzerinden $.get, olmalılar yapıyor) alınırken, oldu echo arka içindekiler Origin başlık. Ancak, file:// URL null üretmek eko-geri) yetkili olamaz Origin.

İlk Darin $.getJSON kullanmak için öneri ile dolambaçlı bir şekilde çözüldü. Biraz büyü isteği "" eğer alt görürse "8 ** URL. jsonp" json, varsayılan türünü değiştirmek için yapar

O artık file:// bir URL bir İSTASYONDAN bir isteği gerçekleştirmek için çalışarak ikinci çözüldü.

Diğer insanlar için açıklığa kavuşturmak için, burada basit sorun giderme talimatlar:

  1. Eğer JSONP kullanmaya çalışıyorsanız, aşağıdaki birini dava olduğundan emin olun:
    • $.get jsonp dataType set kullanıyorsun.
    • $.getJSON URL callback=? dahil kullanıyorsun.
  2. Eğer KÖŞELERİ üzerinden etki alanları arası bir XMLHttpRequest yapmak için çalışıyorsan...
    1. http:// ile test ettiğinizden emin olun. Komut dosyaları file:// ile çalışan bir İSTASYONDAN için sınırlı destek var.
    2. Tarayıcı 18* *emin olun. (Opera ve Internet Explorer partiye geç)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • dirkgently1

    dirkgently1

    13 NİSAN 2006
  • joshsnice

    joshsnice

    28 Kasım 2006