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.
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.
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é
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
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.
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.