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