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
Kayıt için, anladığım kadarıyla iki sorun vardı:
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.:// 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çindekilerOrigin
başlık. Ancak,file://
URL null üretmek eko-geri) yetkili olamazOrigin
.
İ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:
- Eğer JSONP kullanmaya çalışıyorsanız, aşağıdaki birini dava olduğundan emin olun:
$.get
jsonp
dataType
set kullanıyorsun.$.getJSON
URLcallback=?
dahil kullanıyorsun.
- Eğer KÖŞELERİ üzerinden etki alanları arası bir XMLHttpRequest yapmak için çalışıyorsan...
http://
ile test ettiğinizden emin olun. Komut dosyalarıfile://
ile çalışan bir İSTASYONDAN için sınırlı destek var.- Tarayıcı 18* *emin olun. (Opera ve Internet Explorer partiye geç)
Origin null Access-Control-Allow-Origi...
Kökeni Access-Control-Allow-Origin tar...
XMLHttpRequest Kökenli null Access-Con...
Hata :İçerik-Türü Access-Control-Allow...
Hayır 'Access-Control-Allow-Origi...