web-dev-qa-db-fra.com

Ionique + Angular POST demande l'état de retour 404

Je viens de mettre à jour la nouvelle version sur Angular + Ionic et la méthode de traitement de la requête distante a cessé de fonctionner et renvoie toujours la réponse 404.

La demande suit:

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
{,…}

Le code de la méthode en cours de traitement de la requête distante est le suivant:

    // set transfer credentials
                $http({
                    method : 'POST',
                    url : $scope.remoteUrl,
                    data: {img_base64: "/9j/4AAQSkZ"},
                    headers: 'application/json',
                    timeout: 10000
                    // success response
                }).success(function(data, status, headers, config) {
                    //SUCESSS
                    } else {
                    //PROCESSING ERROR                     
}

                    // error response
                }).error(function(data, status, headers, config) {
                    // ERROR
                });

J'ai essayé de le résoudre en utilisant ce sujet:

AngularJs $ http.post () n'envoie pas de données

et 

Angular + demande Ionic Post obtenant 404 introuvable

Mais sans chance.

Le côté serveur traite la demande de la manière suivante:

$inputJSON = file_get_contents('php://input');
    $input= json_decode( $inputJSON, TRUE ); //convert JSON into array

Si j'essaie d'envoyer une demande en utilisant Postman ou Curl, tout semble fonctionner. 

Informations ioniques:

Node Version: v0.12.2
Cordova CLI: 5.0.0
Ionic CLI Version: 1.3.22
Xcode version: Xcode 6.3.1 Build version 6D1002 
ios-sim version: Not installed
ios-deploy version: Not installed

Version AngularJS:

"version": "1.3.13",

Comment puis-je le résoudre s'il vous plaît?

Merci beaucoup pour tout conseil 

16
redrom

Hum, je viens de rencontrer le même problème: l'en-tête suggère qu'il a été récupéré from cache... Mais en réalité, il semble qu'il s'agisse d'une nouvelle politique de sécurité dans les nouvelles versions de Cordova. 

Voici comment j'ai résolu le problème:

J'ai installé le 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 méta (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 requêtes générales; l'hôte ws://localhost:35729 est utilisé pour le rechargement en direct dans ionic serve

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

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

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

self désigne l'hôte actuel du fichier index.html.

Vous devrez ajouter les vôtres 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 le plugin liste blanche vous avertira beaucoup.

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

Reconstruisez ensuite votre application et cela devrait fonctionner à nouveau.

40
Tiesselune

J'ai également eu ce problème et recherché beaucoup puis finalement… J'ai enlevé le plugin de liste blanche:

cordova plugin remove cordova-plugin-whitelist

ensuite il l'a réinstallé

cordova plugin add cordova-plugin-whitelist

Cela m'a aidé et espère que cela résoudra votre problème

5
Vishnu Kumar Soni

Cela faisait longtemps que je me débattais avec cela, mais le truc était d'installer le plug-in, de configurer le CSP dans index.html, puis de le supprimer et de l'ajouter à nouveau.

1
Wouter van Vegchel