web-dev-qa-db-fra.com

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

cette question pointe en partie vers ma question précédente: Ionic + Angular POST request return state 404

Mais je n'ai pas pu trouver de solution de travail.

Le problème suit:

si je demande à l'application mobile exécutée 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 demande sur le bureau en utilisant le plugin Postman dans le navigateur Chrome, je reçois toujours la réponse 200 avec les données dont j'ai besoin.

Je pensais que c'était un problème causé par Angular http mais dans le post précédent, j'ai remarqué que ce n'était pas vrai.

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

Merci beaucoup pour tout conseil.

MODIFIER:

J'ai aussi essayé de mettre 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.

26
redrom

A beaucoup de gens sont éprouvent cela .

Je viens de rencontrer le même problème. Il semble qu'il s'agisse d'une nouvelle politique de sécurité dans les nouvelles versions de Cordova.

Voici comment je l'ai résolu:

J'ai installé plugin de liste blanche de Cordova :

cordova plugin add cordova-plugin-whitelist

Ensuite, ajoutez votre politique de contenu dans votre index.html en tant que balise META (en utilisant votre propre hôte ou "*" pour accepter toutes les demandes):

<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 demandes générales; le ws://localhost:35729 L'hôte est utilisé pour le rechargement en direct dans ionic serve.

script-src est utilisé pour l'exécution sécurisée des scripts

unsafe-inline et unsafe-eval sont nécessaires pour que angular fonctionne correctement.

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

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

Vous devrez ajouter le vôtre pour que vos demandes fonctionnent. N'oubliez pas d'ajouter le protocole et le port s'ils ne sont pas standard

Vous pouvez ignorer la balise META si vous ne le souhaitez pas, mais vous obtiendrez de nombreux avertissements du plugin de liste blanche.

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

Reconstruisez ensuite votre application, et cela devrait fonctionner à nouveau.

55
Tiesselune

Eu un même problème, rien n'y fait, alors je viens de supprimer le plugin whitelist:

cordova plugin remove cordova-plugin-whitelist

puis l'a réinstallé

cordova plugin add cordova-plugin-whitelist

alors ça a marché

35
Bruno Samardžić

J'ai eu le même problème et j'ai pu le résoudre en ajoutant le plugin suivant:

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

Après plusieurs heures, j'ai trouvé une solution qui fonctionnait: exécutez cordova plugin add cordova-plugin-whitelist

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

3
Ewertom Moraes

J'ai eu un problème similaire avec le signe Firebase sur mon Android mais je pouvais me connecter sur le navigateur.

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

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

2
Suhas s