Cordova / Ionic : $http-request nicht verarbeiten, während die Emulation oder laufen auf dem Gerät
Alles lief gut Letzte Woche, und während ich lief die Anwendung auf dem Gerät oder emuliert mit Genymotion, die alle Aufrufe der api gearbeitet (Entweder durch Rückgabe der Daten oder nicht, aber zumindest, etwas zu zeigen).
War ich mit
ionic run android
Ich hinzufügen, aktualisieren der globalen cordova, ionic:
npm install -g cordova ionic
Da, die alle den $http-requests werden auch nicht die Verarbeitung. Ich bekomme keine Antworten, während die Api ist noch gut und die CORS sind perfekt eingestellt.
Die einzige Möglichkeit, die ich gefunden ist, verwenden Sie die option --livereload oder -l :
ionic run -l android
Möchte ich vermeiden, das livereload um jeden Preis.
Begann ich, um ein Projekt von Grund auf, mit ionic-1.0.0-und cordova-lib 4.3.0.
angular.module('starter.controllers', [])
.controller('AppCtrl', function($scope, $ionicModal, $timeout, $http) {
alert('calling api');
//Create an anonymous access_token
$http
.get(domain+'/oauth/v2/token?client_id='+public_id+'&client_secret='+secret+'&grant_type=client_credentials')
.then(function(response){
alert(response.data.access_token);
});
})
So, während der Verwendung :
ionic serve
Ist es richtig Alarmierung 'api-Aufruf', wird die Reaktion (Ein OAuth-access-token für das Beispiel).
Aber während der Verwendung :
ionic run android
Es ist nur die Alarmierung 'Aufruf der api' aber scheint nicht zu verarbeiten der http-Anfrage.
Hatte jemand etwas ähnliches erleben? Ich bin immer große Kopfschmerzen auf, die.
- Sehen, ob diese Antwort hilft dir: stackoverflow.com/a/29916802/4412363
- Danke, ich werde versuchen, dass jetzt und erhalten Sie zurück.
- Okay, das ist Arbeit! Gut ist, dass Sie wollen, um zu schreiben, eine Antwort mit Verlinkung zu diesem post wäre ich froh, um ihn zu validieren.
- Es ist eigentlich eine doppelte, aber deine Frage ist spezifischer Natur, die dazu führen, Menschen, um die es bei der Suche auf dieses Thema, so will ich hinzufügen, die Antwort als
Community Wiki
. - Ja, dies ist der Grund, warum es war ziemlich schwer, die Antwort zu finden mit den Stichworten, die ich suchte. Danke.
- Du bist herzlich willkommen. 🙂
- Für mich mit cordova 6.3.0, ich habe zu ändern
<meta>
von .html-Datei, die eine Netz-Anfrage. Als Folgen<meta http-equiv="Content-Security-Policy" content="default-src 'self' * data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
. Ich füge*
nach'self'
dann funktioniert es. Oder besser, um genau zu sein, aber ich muss explizit angeben, Protokoll zu D. H.https://yourdomain.com
und ersetzen*
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit dem update der Cordova 4.0.0, werden Sie vor ein Problem, nicht in der Lage, HTTP-Aufrufe von RESTful APIs und laden von externen Ressourcen, zu denen andere HTMLs/video/audio/Bilder.
Whitelisting der domains mit cordova-plugin-whitelist löst das Problem.
entfernen whitelist-plugin, wenn bereits installiert:
Hinzufügen von whitelist-plugin via CLI:
und fügen Sie die folgende Zeile code in die eigene app config.xml die sich in Ihrer Anwendung root-Verzeichnis:
Empfohlen in der Dokumentation:
oder:
und
diese
meta
tag in Ihremindex.html
Den Grund für dieses Problem:
Von Cordova für Android 4.0.0-update:
unsafe-inline
undunsafe-evals
?<allow-navigation href="http://example.com/*" />
, was wurde empfohlen, in der Dokumentation.War für mich, als ich versuchte, die folgende...
In Config.xml Zugriff erlauben & Navigationen, um Ihre domains:
Dann in index.html fügen Sie die Content-Security-Policy, wie unten: