phonegap: basée sur les cookies d'authentification (PHP) ne fonctionne pas [webview]
Je suis en train de travailler sur un mobile web app à l'aide de sencha touch, HTML5 et phonegap comme un wrapper.
J'utilise PHP-Authentification (Cookie) et ajax demandes. Tout fonctionne bien sur safari ou chrome, mais après le déploiement avec phonegap (webview) il ne fonctionne pas plus...
Toute aide serait appréciée 🙂
Un peu plus de détails:
Toutes les données de mon application est chargée via des requêtes ajax sur mon serveur composant "mobile.php".
J'utilise PHP de base-Auth pour autenticate l'utilisateur:
- AJAX-Demande de [nom d'utilisateur, mot de passe] -> mobile.php
-> Session (cookie) - Toutes les autres demandes si l'authentification a réussi
Quelle est la différence entre un normal safari site web et la webview?
Vous devez vous connecter pour publier un commentaire.
j'ai tout compris:
vous devez changer le phonegap_delegate.m fichier et ajoutez le code suivant à la méthode init:
il permet webview pour accepter les cookies de requêtes ajax
NSHTTPCookieAcceptPolicyAlways
est le cookie par défaut de stockage de la politique. Pourtant, les cookies ne sont pas stockés ou expédiés en jQuery$.getJSON
demandes.Si votre Phonegap requêtes AJAX ne sont pas de tir rappels comme ils sont censés le faire, cela peut être la raison.
Si la réponse que vous obtenez toutes les tentatives pour définir les cookies et que vous n'avez pas fait de Michael fixer ensuite votre (jquery), AJAX demande échoue silencieusement -- ni le succès: ni erreur: rappels seront le feu, en dépit du fait que le serveur a bien reçu la demande et envoyé une réponse. Il semble que vous devez le faire même si vous n'avez pas de soins sur les cookies.
J'espère que cela aide quelqu'un.
Je n'ai pas de soins sur les cookies, mais je viens de passer quelques heures à essayer de comprendre pourquoi les rappels n'ont pas le feu!
Il y a une solution qui fonctionne sur android aussi:
Installer le plugin https://github.com/wymsee/cordova-HTTP pour effectuer arbitraire requêtes HTTP(S).
Remplacer
XMLHttpRequest
avec le plugin alternative (cordovaHTTP.get
oucordovaHTTP.post
):La réponse contient le statut, les données et les
response.headers["Set-Cookie"]
, qui peut être analysé pour le nom, la valeur, le domaine, de chemin et même HttpOnly drapeaux 😉Dit cookie peut être enregistré dans
LocalStorage
et envoyé dans les requêtes suivantes (voircordovaHTTP.setHeader()
ouheader
paramètre de.get
/.post
méthodes) afin de simuler un utilisateur authentifié sur un navigateur de bureau.Meilleurs moyens pour stocker obtenir et de supprimer les cookies de son travail très bien dans mon application qui est sur live
Pour stocker la valeur dans le cookie
Pour Obtenir la valeur dans le cookie
Pour Supprimer la valeur de cookie