2016-05-23 16 views
8

Bu konuyla ilgili saatlerde arama yapıyorum, ancak yine de buna bir çözüm bulamıyorum.CORS + Cordova: ile ilgili sorunlar: Access-Control-Allow-Origin

Bir Uygulama Cordova (basicely HTML/JS) Yani developping ediyorum: Uygulamanın Navigatörden mobil çalışır ve sorun bir API bir ajax isteği yapan vardır: https://developer.riotgames.com/ Ama ben sadece istiyorum diyelim google sayfasını al.

Bunu nasıl yapmalıyım, bu mümkün mü?

$.ajax({ 
    type: "GET", 
    url: "https://google.com", 
    dataType: "text", 
    success: function(response){ 
     alert("!!!"); 
    }, 
    error: function(error){ 
     alert("..."); 
    } 
}); 

Ben tekrar tekrar aynı hatayı alıyorum: Burada basit exemple olan

XMLHttpRequest cannot load https://google.com/ . No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access

Ben kodu çalıştırmak çünkü kökeni 'boş' olduğu: file:///D:/Projets/LoL/www/index.html ve ben okumak Navigator engelliyor, ancak güvenlik --disable-web-security ile devre dışı bırakılırsa da işe yaramıyor Ve tabiki, katılmak istediğim sunucuya erişimim yok.

Yardımlarınız için çok teşekkürler!

+1

Olası kopyalar [XmlHttpRequest hatası: Menşei boş Erişim-Control-Allow-Origin tarafından izin verilmiyor] (http://stackoverflow.com/questions/3595515/xmlhttprequest-error-origin-null- izin verilmeyen-erişim-kontrol-izin-kökeni). JSONP üzerinde biraz okuma yapmayı öneririm ama genel olarak sunucuyu değiştiremezseniz, yapmak istediğiniz şeyi yapmanın iyi bir yolu yoktur. – CollinD

cevap

9

Cordova beyaz liste eklentisine ihtiyacınız var: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/.

<access origin="*" /> 
<allow-navigation href="*"/> 

Ve index.html İçerik-Güvenlik-Politika meta vardır:

config.xml'de bu var. Bir şey gibi:

<meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data:"> 
+2

Tarayıcı olarak çalıştırdığımda benim için çalışmıyor. Hala sahip olduğum: "Çapraz Kaynak Talebi Engellendi: Aynı Kaynak İlkesi, http: // localhost: 7788/testAction adresindeki uzak kaynağı okumaya izin vermiyor. Bu, kaynağı aynı etki alanına taşıyarak veya CORS'yi etkinleştirerek giderilebilir. – Emiter

+0

Eğer bir el cihazına dağıtıyorsanız, daha iyi sonuçlara sahip olabilirsiniz.Önemli bir şekilde CORS yanıtlarının uygulamadan veya tarayıcıdan çalıştırıldığında biraz farklı olduğunu okudum (maalesef hatırlayamıyorum) CORS özellikli meta etiketlerimde bir test uygulaması oluşturdum. Sadece benim telefonuma yerleştirdiğimde çalıştı - masaüstümden değil. – nmcilree

0

Ben sorunumu çözdü nodjs sunucusunda aşağıdaki eklemiş; ILLUSTRATORNG.

Eğer nodejs kullanıyorsanız, bu yararlı olabilir.

Teşekkür

ait