2012-08-18 16 views
14

Inicié sesión en mi back-end de tornado desde iOS y devolví un secure_cookie y noté que también podría solicitar otra información siempre que validara el secure_cookie que configuré. ¿Cuánto tiempo persiste NSURLConnection en la cookie o se eliminará la cookie una vez que cierren la aplicación?NSURLConnection persiste automáticamente las cookies enviadas desde el servidor?

Esto se menciona en los documentos de Apple:

El sistema de carga URL envía automáticamente las cookies almacenadas apropiadas para un NSURLRequest. a menos que la solicitud especifique no a envíe cookies.

+0

¿No hay respuesta a esta pregunta? "¿Cuánto tiempo persistirá NSURLConnection en la cookie o se eliminará la cookie una vez que el usuario cierre la aplicación?" – RubyGladiator

Respuesta

24

Algunas facetas a su pregunta.

Para empezar, NSURLConnection administrará las cookies de manera predeterminada en función de la configuración del dispositivo. Guardará las cookies en la tienda y las enviará según corresponda (cuando el dominio coincida con una cookie existente). Esto significa que si realiza una solicitud desde una URL con una cookie guardada en la tienda de cookies, se enviará. Esto explica el comportamiento que mencionaste. En general, con la configuración predeterminada, la cookie persistirá durante bastante tiempo.

Esta declaración inicial, sin embargo, tal vez no sea útil para sus necesidades. Supongo que es posible que desee tener control sobre la caducidad de (o mantener "para siempre") este campo secure_cookie, por lo que su aplicación no tendrá que autenticarse aún más en el futuro.

En este caso, NSHTTPCookieStorage es el lugar para buscar. Esta clase le permitirá tanto Recuperar:

[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: [NSURL URLWithString: @ "http://example.com"]]

y ajuste:

[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie] (además de la creación de el objeto del diccionario de cookies)

Según la experiencia y los comentarios de otros en línea, debe tener en cuenta que el almacenamiento de cookies no siempre es 100% confiable. Si desea enviar una cookie específica y un valor al servidor, debe almacenar ese valor con su aplicación (prefs o Core Data, por ejemplo) y restablecer la cookie con el NSHTTPCookieStorage apropiado en cada inicio.

+0

El único problema que me preocupa es este qoute de los documentos de Apple: "Nota: Cambiar la política de aceptación de cookies en una aplicación afecta la política de aceptación de cookies para todas las demás aplicaciones en ejecución.Cuando otra aplicación cambia el almacenamiento de cookies o la política de aceptación de cookies, NSHTTPCookieStorage notifica a una aplicación publicando las notificaciones NSHTTPCookieStorageCookiesChangedNotification y NSHTTPCookieStorageAcceptPolicyChangedNotification. "Por lo tanto, parece que debería usar la administración de cookies predeterminada de NSURLConnection. – RubyGladiator

+3

@RubyGladiator, esa documentación es Mac OS específico, y creo que la nota anterior dice que no es cierto para iOS: iOS Nota: Las aplicaciones no comparten las cookies en iOS. –

+0

Eso es cierto, la forma en que se configuran los documentos hizo que ese punto fuera confuso. – RubyGladiator

2

Debe examinar la administración de caché de cookies desde here Esto le ayudará a comprender mejor cómo se maneja el almacenamiento en caché de cookies.

Hay otra muy buena description, donde se menciona que puedes obtener la cookie de los campos de encabezados y luego tienes el control total sobre ella. Si lo desea, almacene y use cuando la aplicación se inicie nuevamente.

Espero que esto te ayude a resolverlo.

Cuestiones relacionadas