2011-02-26 6 views
11

Mi aplicación de iPhone nativa, desarrollada con phonegap con jquery (por lo que su navegador se basa), puede iniciar sesión en el servidor web y una vez que haya iniciado sesión, los usuarios pueden acceder a sus recursos. El servidor establece la identificación de sesión en la cookie una vez que el usuario está autenticado.¿Dónde se administra la cookie en la aplicación phonegap con jquery?

No tengo ningún problema con este esquema, pero me pregunto dónde está almacenada la cookie porque cuando hago una alerta (document.cookie), devuelve una cadena vacía.

¿Es posible que la función ajax en jquery administre la cookie internamente y la envíe para cada solicitud al mismo dominio?

+0

Parece que el entorno del navegador sandbox iphone para cada aplicación móvil. Creo que esta podría ser la razón. – katsuya

Respuesta

14

Si desea que su aplicación para gestionar automáticamente las cookies para agregar esto a su archivo appDelegate.m:

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage 
             sharedHTTPCookieStorage]; 
[cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; 

Si desea administrar la información de sesión por sí mismo, puede hacer todas las peticiones Ajax como este :

var request = { 
       url: my_server_url, 
       success: function(response, status, request) { 
        var header = request.getAllResponseHeaders(); 
        var match = header.match(/(Set-Cookie|set-cookie): (.+?);/); 
        if(match) 
         my_saved_cookie = match[2]; 
       }, 
       } 

if(my_saved_cookie) 
    request.headers = { Cookie: my_saved_cookie }; 

$.ajax(request); 

En mi aplicación administraba las cookies de sesión por mi cuenta con el segundo método hasta que descubrí el primer método.

+2

El primer método no funciona en mi simulador iOS5, parece que Apple cambió el comportamiento. El segundo método funciona bien. – Chris

+1

Esto funciona bien para la solicitud ajax. Pero, ¿cómo debería manejar la imagen y otros recursos? – gviswanathan

+0

@Chris: este método debería funcionar bien para iOS5, asegúrese de agregar el código en el archivo correcto. –

Cuestiones relacionadas