Cordova / Ionic: $ HTTP-Anfrage wird beim Emulieren oder Ausführen auf dem Gerät nicht verarbeitet

8

Alles lief letzte Woche gut und während ich die Anwendung auf dem Gerät lief oder mit Genymotion emulierte, funktionierten alle Aufrufe an die API (Entweder gaben die Daten zurück oder versagten, aber zeigten zumindest etwas).

Ich habe

benutzt %Vor%

Ich füge hinzu, um das globale cordova ionic zu aktualisieren:

%Vor%

Da alle $ http-Anfragen nicht einmal verarbeitet werden. Ich kann keine Antworten bekommen, während der Api immer noch gut funktioniert und die CORS perfekt eingestellt sind.

Der einzige Weg, den ich gefunden habe, ist die Option --livereload oder -l:

%Vor%

Ich möchte es vermeiden, das Liveload um jeden Preis zu nutzen.

Ich habe angefangen, ein Projekt von Grund auf mit ionic 1.0.0 und cordova lib 4.3.0 zu erstellen.

%Vor%

Also während der Verwendung:

%Vor%

Es wird korrekt "Aufruf von API" und dann die Antwort (ein OAuth-Zugriffstoken für dieses Beispiel) gemeldet.

Aber während der Verwendung:

%Vor%

Es wird nur 'calling api' gemeldet, scheint aber die HTTP-Anfrage nicht zu verarbeiten.

Hat jemand Ähnliches erlebt? Ich bekomme große Kopfschmerzen.

    
Brieuc 19.05.2015, 12:50
quelle

1 Antwort

18

Mit der Aktualisierung von Cordova 4.0.0 werden Sie nicht mehr in der Lage sein, HTTP-Aufrufe an REST-konforme APIs auszuführen und externe Ressourcen zu laden, die andere HTMLs / Video / Audio / Bilder enthalten.

Whitelisting der Domains mit cordova-plugin-whitelist löst das Problem.

Whitelist-Plugin entfernen, falls bereits installiert:

%Vor%

Fügen Sie das Whitelist-Plugin über CLI hinzu:

%Vor%

und fügen Sie dann die folgende Codezeile zur config.xml Ihrer Anwendung hinzu, die sich im Stammverzeichnis Ihrer Anwendung befindet:

Empfohlen in der Dokumentation:

%Vor%

oder:

%Vor%

und

Dieses meta -Tag in Ihrem index.html

%Vor%

Der Grund für dieses Problem:

Von Cordova 4.0.0 für Android-Update:

  

Whitelist-Funktionalität wurde überarbeitet

     
  • Sie müssen das neue cordova-plugin-whitelist-Plugin hinzufügen, um weiterhin eine Whitelist zu verwenden

  •   
  • Das Einrichten einer Content-Security-Policy (CSP) wird jetzt unterstützt und ist der empfohlene Weg zur Whitelist (siehe Details in der Readme-Datei des Plugins)

  •   
  • Netzwerkanfragen sind standardmäßig ohne das Plugin blockiert, also installiere dieses Plugin, um alle Anfragen zu erlauben, und selbst wenn du es bist   Verwenden von CSP.

  •   
  • Diese neue Whitelist wurde erweitert, um sie sicherer und konfigurierbarer zu machen. Das Legacy-Whitelist-Verhalten ist jedoch weiterhin separat verfügbar   Plugin (nicht empfohlen).

  •   

Hinweis: Dies ist zwar nicht Teil dieser Version, aber die neueste Standard-App   erstellt von cordova-cli enthält standardmäßig dieses Plugin.

    
Keval 08.08.2016, 10:25
quelle