' 'Access-Control-Allow-Origin' Başlığı istenen kaynak mevcut.&jQuery xml hatası#039; | Netgez.com
SORU
6 Kasım 2013, ÇARŞAMBA


' 'Access-Control-Allow-Origin' Başlığı istenen kaynak mevcut.&jQuery xml hatası#039;

Üzerinde çalışıyorum, bu kişisel proje, sadece benim için eğlenceli bir yerde okumak istiyorum bir xml dosyası bulunan http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml ve ayrıştırma xml ve kullanmak için dönüştürmek değerleri arasında para.

Şu ana kadar xml okumak için çok basit olan kodu aşağıda yaptım ama aşağıdaki hatayı alıyorum.

XMLHttpRequest yükleyemiyor**. Hayır 'Access-Control-Köken İzin Ver' başlık istenen kaynak mevcut. Kökeni '31* *' Bu nedenle erişim izin verilmez.

$(document).ready( 
    function() {     
        $.ajax({          
            type:  'GET',
            url:   'http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml',
            dataType: 'xml',              
            success: function(xml){
                alert('aaa');
            }
         });
    }
);

Birisi tamir edebilirim nasıl benim kod yanlış yapıyorum ne işaret edebilir umuyorum ki bir şey benim koduyla yanlış göremiyorum.

CEVAP
6 Kasım 2013, ÇARŞAMBA


Bir dosya http://run.jsbin.com dağıtılmış http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml URL erişmek mümkün same-origin policy bağlı olmayacak.


Kaynak (akakökenli) sayfa vehedefURL farklı etki alanları (run.jsbin.com www.ecb.europa.eu), kodunuzu aslında bir haline getirmeye çalışıyorCross-domain (CORS)istek, GET sıradan değil.

Birkaç kelime,aynı kaynak politikasıbu tarayıcılar sadece hizmet için Ajax çağrıları izin zorlaraynı etki alanıHTML sayfası olarak.


Örnek:

http://www.example.com/myPage.html bir sayfa sadece doğrudan http://www.example.com/api/myService http://www.example.com, bu hizmetleri talep edebilirler. Eğer hizmet diğer etki alanı (http://www.ok.com/api/myService) söylemek ise, tarayıcı düzenli aramasını beklediğiniz gibi) yapmaz. Bunun yerine, bir İSTASYONDAN bir istek yapmak için çalışacağız.

Özetle, bir (İSTASYONDAN) gerçekleştirmek için farklı etki alanları arasında*, tarayıcı isteği:

  • Özgün istek (deÄŸer olarak sayfanın etki alanı) Origin Bir BaÅŸlık ve her zamanki gibi yapacak
  • Ve sonrasadece eÄŸersunucuyanıtbu istek bir İSTASYONDAN isteÄŸi izin adequate headers (Access-Control-Allow-Origin is one of them) içerir, göz atın çaÄŸrısı (HTML sayfasının aynı etki altında neredeyse** tam olarak yaptığınız ÅŸekilde) tamamlayacak.
    • EÄŸer beklenen baÅŸlıklar gel eÄŸer doÄŸru deÄŸilse, tarayıcı sadece PES sana yaptığı gibi).


* yukarıdaki adımları gösteriyorbasitistek, hiçbir fantezi başlıkları GET düzenli gibi. Eğer istek çok basit (gibi POST application/json içerik türü), tarayıcı olur dur bir an ve daha önce yerine getiren, ilk gönderme OPTIONS istek için hedef URL. Yukarıdaki gibi, sadece OPTIONS bu isteğe yanıt KÖŞELERİ başlıkları içeriyorsa devam edecek. OPTIONS bu çağrı olarak bilinirön kontrolistek.
** diyorumneredeysedüzenli aramalar ve KÖŞELERİ aramalar arasında başka farklılıklar da var çünkü. Çok önemli bir cevap mevcut olsa da, bazı başlıklar, 35 ** başlık olacak.


Nasıl çözmek için?

Başlıkları ekleyin.KÖŞELERİ etkinleştirmek için basit bir şekilde, gerekli başlıklar (Access-Control-Allow-Origin) sunucu yanıt ekliyor. (Her sunucu/dil bunu yapmak için bir yol vardır.)

Sadece bir yazım hatası mı?Bazen JavaScript kodu hedef etki alanında sadece bir yazım hatası var. Kontrol ettiniz mi? Eğer sayfa www.example.com ise www.example.com düzenli aramalar yapacak! Diğer URL, api.example.com example.com www.example.com:8080 olarak kabul edilirfarklıtarayıcı tarafından etki! Eğer port farklı ise evet, o zaman farklı bir etki!

Son çare:Eğer sunucu tarafında hizmetine erişimi yok eğer değil, aynı zamanda (araçlar gibi . yansıtabilirsiniz ^em>ters vekillerve gerekli başlıkları orada yer alır.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • DetroitBORG

    DetroitBORG

    29 Temmuz 2008
  • efaustus9

    efaustus9

    16 HAZİRAN 2006