Ionic + Angular - Comment éviter le "404 Not Found (from cache)" après une requête POST?

cette question renvoie en partie à ma question précédente : Ionique + Angulaire de POSTE demande de retour de l'état 404

mais je n'ai pas pu trouver de solution.

le problème est le suivant:

si je fais une demande depuis l'application mobile qui tourne sur l'appareil, j'obtiens toujours la réponse 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
{,…}

mais si j'ai essayé la même requête sur le bureau en utilisant le plugin Postman dans le Navigateur Chrome je reçois toujours la réponse 200 avec des données ce dont j'ai besoin.

je pensais que c'était un problème causé par la méthode http angulaire mais dans le post précédent j'ai été remarqué que ce n'est pas vrai.

Comment puis-je éviter cela, s'il vous plaît? Dois-je configurer certains en-têtes en HTML de l'application, pendant la requête ou du côté serveur (PHP)?

Merci beaucoup pour tout conseil.

EDIT:

J'ai essayé aussi de définir cache:false de cette façon:

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

mais sans chance.

23
demandé sur Community 2015-05-11 10:32:28

5 réponses

Un beaucoup de gens sont l'expérience .

je viens de rencontrer le même problème. Il semble que cela ait à voir avec une nouvelle politique de sécurité dans les nouvelles versions de Cordova.

Voici comment je l'ai résolu:

j'ai installé Cordova liste blanche du plugin :

cordova plugin add cordova-plugin-whitelist

Ensuite, ajoutez votre contenu politique dans votre index.html en tant que meta tag (en utilisant votre propre hôte ou' * 'pour accepter toutes les requêtes):

<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 est utilisé pour les requêtes générales; l'hôte ws://localhost:35729 est utilisé pour le live-reload dans ionic serve .

script-src est utilisé pour sécuriser l'exécution du script

unsafe-inline et unsafe-eval sont nécessaires pour que angulaires pour fonctionner correctement.

data: gap: https://ssl.gstatic.com n'est utilisé sur iOS.

self signifie l'hôte actuel du fichier index.html .

vous devrez ajouter le vôtre pour que vos requêtes puissent fonctionner. N'oubliez pas d'ajouter le protocole et le port s'ils ne sont pas standard

vous pouvez sauter la balise meta si vous ne la voulez pas, mais vous obtiendrez beaucoup d'avertissements du plugin whitelist.

plus d'informations sur la façon de configurez cela dans le readme du plugin .

alors reconstruisez votre application, et elle devrait fonctionner à nouveau.

50
répondu Tiesselune 2017-05-23 12:34:25

avait le même problème, rien n'a aidé, alors j'ai juste enlevé le plugin whitelist:

cordova plugin remove cordova-plugin-whitelist

puis renommé

cordova plugin add cordova-plugin-whitelist

puis ça a marché

25
répondu Bruno Samardžić 2016-06-23 16:02:16

j'avais le même problème et je pouvais le résoudre en ajoutant le plugin suivant:

ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git
4
répondu Enayat Rajabi 2015-11-27 03:39:38

après de nombreuses heures, j'ai trouvé une solution qui a fonctionné: run cordova plugin add cordova-plugin-whitelist

Dans mon cas, j'avais déjà configuré config.xml et l'index.html sur l'origine, comme mentionné ici et d'ailleurs.

3
répondu Ewertom Moraes 2016-12-19 01:12:12

j'ai eu un problème similaire avec Firebase sign sur mon appareil android mais je pouvais me connecter sur le navigateur.

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

a utilisé les lignes ci-dessus pour résoudre le problème.

1
répondu Suhas s 2017-05-12 07:01:48