Cordova AJAX-request funktioniert nicht

Ich bin mit Cordova 5.3.1, und ich zu sein scheinen völlig unfähig zu machen, alle Netzwerk-Anfragen ohne Fehler. Wenn ich

$.ajax( "http://foo.bar.com/getfeed" )
.done(function() {
    alert( "success" );
})
.fail(function(jqXHR, textStatus, errorThrown) {
    alert( errorThrown );
})
.always(function() {
    alert( "complete" );
});

zu index.js es schlägt fehl und Warnungen Error: SecurityError: DOM Exception 18 im iOS-und SecurityError: Failed to execute 'open on 'XMLHttpRequest': Refused to connect to 'http://foo.bar.com/getfeed' because it violates the document's Content Security Policy., so dass es Aussehen wie CORS blockiert ist.

Derzeit die whitelist-plugin nicht richtig installieren, wenn Sie installieren es per dieser SO ein post und diese JIRA-issue, im Grunde ist es erforderlich die iOS-Plattform >=4.0.0-dev. Ich kann immer noch Kraft, es zu installieren, eine ältere version mit:

cordova plugin add cordova-plugin-whitelist@1.0.0

gemäß der Vorschläge in dem SO ein post und JIRA issue.

Jedoch bin ich noch nicht in der Lage, um alle http-Anforderungen an externe Domänen. Ich bekomme immer noch die gleiche "DOM Exception 18' - Fehler. Meine config.xml Datei ist derzeit

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.company.pearstest" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>CORS test</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
    <author email="[email protected]" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <content src="index.html" />
    <plugin name="cordova-plugin-whitelist" version="1" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
</widget>

Den tag für die verschiedenen Ursprünge scheint sich verändert zu haben über verschiedene Versionen in letzter Zeit, und als Ergebnis habe ich versucht, jede denkbare Kombination der verschiedenen tags in diese Datei.

Habe ich auch überprüft $.support.cors sicherstellen, dass jQuery ermöglicht CORS und es tut sich (jQuery arbeitet richtig, wie die AJAX-Anfragen ausgeführt werden, die Fehler-callback-anstatt schweigend versagt).

Ich habe auch den meta-tag

<meta http-equiv="Content-Security-Policy" content="default-src 'self' https:">

in index.html. Ich vermute, dies ist nicht ein Problem mit meinem emulator Blockierung von http-Anfragen, da es ein problem bei Android-und iOS-Emulatoren und auf einem Android-Gerät.

Hat jemand eine Idee, warum ich mich noch mit CORS-Probleme? Danke.

  • Ich habe gerade aktualisiert meine cordova-app vom 3.3.? 5.3.1. Auf iOS-Anfragen funktionieren OK, aber Sie erfordern HTTPS-Endpunkte mit gültige certs auf ios9 jetzt. Aber ich bin auch nirgends mit Android.
InformationsquelleAutor Tony Onodi | 2015-09-23
Schreibe einen Kommentar