19 votes

Stocker et envoyer des cookies http ne fonctionne pas dans l'application PhoneGap

Je développe une application PhoneGap dans Xcode qui communique avec un serveur en utilisant une API web. L'API accepte les requêtes http standard. Dans le cadre du processus d'authentification de l'utilisateur, un cookie est défini et est censé être transmis dans l'en-tête http avec chaque requête ultérieure à l'API.

Lors de l'appel de connexion à l'API, je peux clairement voir qu'un cookie est renvoyé dans l'en-tête de la réponse. Cependant, il ne semble pas être stocké, ni être envoyé dans l'en-tête de la requête http avec chaque nouvel appel à l'API.

Pour faire des appels à l'API, j'utilise l'appel $.getJSON de jQuery.

J'ai trouvé la question et réponse suivantes : phonegap: cookie based authentication (PHP) not working [webview]

La réponse ci-dessus suggère de définir le NSHTTPCookieStorage cookieAcceptPolicy sur NSHTTPCookieAcceptPolicyAlways dans la méthode init du délégué de l'application. J'ai essayé cela et cela ne semble pas résoudre le problème. De plus, selon la documentation d'Apple, la cookieAcceptPolicy par défaut est NSHTTPCookieAcceptPolicyAlways.

Des suggestions sur la manière de faire fonctionner le stockage et l'envoi des cookies sont grandement appréciées.

2voto

Miki Bergin Points 61

Le CookieStorage devrait et sauvegarde le cookie, pour être utilisé lors des requêtes ultérieures. il les ajoute même automatiquement si vous utilisez, par exemple, NSURLRequest... mais seulement si c'est pour le même domaine qui est défini sur le cookie.

J'ai rencontré des problèmes similaires de nombreuses fois auparavant,

les causes possibles peuvent être :

1) le cookie a un domaine différent de celui que vous envoyez dans la requête, peut-être en raison d'une redirection... par exemple si une requête est envoyée à http://www.somesite.com, qui est en fait redirigée vers http://somesite.com (et c'est le vrai nom de domaine, le cookie sera enregistré pour l'url/le domaine somesite.com et non www.somesite.com

2) éventuellement les en-têtes "session only" et "expiration date" sont définis incorrectement sur le cookie, ce qui amène le stockage des cookies à les rejeter

j'espère que cela vous aidera, sachant par expérience que le stockage des cookies peut être frustrant par moments.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X