wake-up-neo.com

Ionic + Angular - Wie vermeide ich "404 Not Found (from cache)" nach POST)?

diese Frage verweist teilweise auf meine vorherige Frage: Ionic + Angular POST Request Return State 404

Aber ich konnte keine funktionierende Lösung finden.

Das Problem ist folgendes:

wenn ich eine Anforderung von der auf dem Gerät ausgeführten mobilen App erhalte, erhalte ich immer die Antwort 404:

Request Method:POST
Status Code:404 Not Found (from cache)
Request Headersview source
Accept:application/json, text/plain, */*
Content-Type:text/plain
Origin:file://
User-Agent:Mozilla/5.0 (Linux; Android 4.4.2; Lenovo Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36
Request Payloadview source
{,…}

Aber wenn ich die gleiche Anfrage auf dem Desktop mit dem Postman-Plugin im Browser Chrome) ausprobiert habe, erhalte ich immer die Antwort 200 mit den Daten, die ich benötige.

Ich dachte, dass es ein Problem war, das durch die Angular http-Methode verursacht wurde, aber im vorherigen Beitrag wurde mir aufgefallen, dass das nicht wahr ist.

Wie kann ich das bitte vermeiden? Sollte ich einige Header in HTML der App setzen, während der Anfrage oder auf der Serverseite (PHP)?

Vielen Dank für jeden Rat.

EDIT:

Ich habe auch versucht, den Cache zu setzen: false auf diese Weise:

$http({
                method : 'POST',
                url : $scope.remoteUrl,
                data: postData,
                headers: headersData,
                cache: false,
                timeout: 10000
                // success response
            })

Aber ohne Glück.

26
redrom

A viele Leute sind erleben das .

Ich bin auf dasselbe Problem gestoßen. Es hat anscheinend mit einer neuen Sicherheitsrichtlinie in neuen Versionen von Cordova zu tun.

So habe ich es gelöst:

Ich habe Cordovas Whitelist-Plugin installiert :

cordova plugin add cordova-plugin-whitelist

Fügen Sie dann Ihre Inhaltsrichtlinie in Ihrem index.html Als Meta-Tag hinzu (verwenden Sie Ihren eigenen Host oder '*', um alle Anfragen anzunehmen):

<meta http-equiv="Content-Security-Policy" content="default-src 'self' yourhost.com ws://localhost:35729 data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *;script-src 'self' localhost:35729 'unsafe-eval' 'unsafe-inline';">

default-src Wird für allgemeine Anfragen verwendet; Der Host ws://localhost:35729 wird für das Live-Reload in ionic serve verwendet.

script-src Wird für die sichere Skriptausführung verwendet

unsafe-inline Und unsafe-eval Sind erforderlich, damit angular ordnungsgemäß funktioniert.

data: gap: https://ssl.gstatic.com Wird nur unter iOS verwendet.

self steht für den aktuellen Host der Datei index.html.

Sie müssen Ihre eigenen hinzufügen, damit Ihre Anforderungen funktionieren. Vergessen Sie nicht, das Protokoll und den Port hinzuzufügen, wenn diese nicht dem Standard entsprechen

Sie können das Meta-Tag überspringen, wenn Sie es nicht möchten, aber das Whitelist-Plug-in enthält viele Warnungen.

Weitere Informationen zur Konfiguration finden Sie in der Readme-Datei des Plugins .

Erstellen Sie dann Ihre App neu und sie sollte wieder funktionieren.

55
Tiesselune

Hatte das gleiche Problem, nichts hat geholfen, dann habe ich gerade das Whitelist-Plugin entfernt:

cordova plugin remove cordova-plugin-whitelist

dann neu installiert

cordova plugin add cordova-plugin-whitelist

dann hat es geklappt

35

Ich hatte das gleiche Problem und konnte es lösen, indem ich das folgende Plugin hinzufügte:

ionic plugin add https://github.com/Apache/cordova-plugin-whitelist.git
4
Enayat

Nach vielen Stunden fand ich eine Lösung, die funktionierte: run cordova plugin add cordova-plugin-whitelist

In meinem Fall hatte ich config.xml und index.html bereits in Origin konfiguriert, wie hier und anderswo erwähnt.

3
Ewertom Moraes

Ich hatte ein ähnliches Problem mit der Firebase-Anmeldung auf meinem Android Gerät, aber ich konnte mich im Browser anmelden.

cordova plugin remove cordova-plugin-whitelist
cordova plugin add cordova-plugin-whitelist

Verwenden Sie die obigen Zeilen, um das Problem zu beheben.

2
Suhas s