2011-12-09 2 views
19

Estoy desarrollando una aplicación PhoneGap en Xcode que se comunica con un servidor mediante una API web. La API acepta solicitudes http estándar. Como parte del proceso de autenticación de usuario, se establece una cookie que se debe transmitir en el encabezado http con cada solicitud posterior a la API.Almacenamiento y envío de cookies http que no funcionan en la aplicación PhoneGap

Durante la llamada de inicio de sesión a la API, puedo ver claramente que se está enviando una cookie como parte del encabezado de respuesta. Sin embargo, parece que no se almacena ni se envía en el encabezado de solicitud http con cada nueva llamada de API.

Para hacer llamadas a la API, estoy usando la llamada de jQuery $.getJSON.

me encontré con la siguiente pregunta y respuesta: phonegap: cookie based authentication (PHP) not working [webview]

La respuesta anterior sugiere establecer el NSHTTPCookieStorage cookieAcceptPolicy a NSHTTPCookieAcceptPolicyAlways en el delegado de la aplicación de init. Lo he intentado y no parece resolver el problema. Además, de acuerdo con Apple's documentation, el valor predeterminado cookieAcceptPolicy es NSHTTPCookieAcceptPolicyAlways.

Las sugerencias sobre cómo obtener el almacenamiento y envío de cookies son muy apreciadas.

+2

Uso exactamente eso en mis aplicaciones y funciona bien en iPhone/iPad ... – Leon

+0

¿Ha mirado este tema? http://stackoverflow.com/questions/4262636/can-jquery-getjson-put-a-domains-cookies-in-the-header-of-the-request-it-makes – sleepwalker

+0

He visto temas similares, sin embargo, según tengo entendido, PhoneGap puede hacer este tipo de cosas ... "Lo que esto significa es que puede realizar solicitudes a puntos finales de API a los que normalmente no podría acceder si esto fuera a implementarse para una configuración de escritorio". http://wiki.phonegap.com/w/page/42450600/PhoneGap%20Ajax%20Sample –

Respuesta

2

CookieStorage debe guardar y guarda la cookie, para ser utilizada en solicitudes posteriores. incluso los agrega automáticamente si usa, por ejemplo, NSURLRequest ... pero solo si es para el mismo dominio que se establece en la cookie.

He encontré con problemas similares muchas veces antes,

posibles causas pueden ser:

1) la cookie tiene un dominio diferente que lo que va a enviar a la solicitud, posiblemente debido a una redirección ... por ejemplo, si las solicitudes se envían a http://www.somesite.com, que en realidad está redirigiendo a http://somesite.com (y que es el verdadero nombre de dominio, cookie se guarda para el sometime.com URL/dominio y ahora www.somesite.com

2) posiblemente los encabezados "sesión única" y "fecha de vencimiento" estén configurados incorrectamente en e cookie, que hace que el almacenamiento de cookies los descarte

Espero que esto ayude, sepa por experiencia el almacenamiento de cookies puede ser frustrante a veces.

Cuestiones relacionadas