2012-03-20 18 views
5

Tengo una aplicación iOS donde estoy cargando contenido html dentro de una vista web. El html es una página de inicio de sesión donde las credenciales del usuario se envían al servidor a través de ajax y se recibe una respuesta de autenticación de éxito/falla. Ahora, la respuesta contiene una cookie (en el campo Set-Cookie cabecera) que puedo capturar en el lado de Objective-C como tal,No se puede leer la cookie en el navegador UIWebview con document.cookie

NSDictionary* headers = [(NSHTTPURLResponse *)response allHeaderFields]; 
NSString *strCookies = [headers valueForKey:@"Set-Cookie"]; 
NSLog(@"cookies -> %@", strCookies); 

La misma respuesta también contiene una responseText que utilizo en el navegador:

Ajax("/login", "POST", { onsuccess : function(response){ 
     /* Do HTML stuff with response */ } 
}); 

Ahora necesito la cookie para realizar más solicitudes ajax (después de la página de inicio de sesión). Sin embargo, la cookie no está configurada dentro del navegador webview. Buscando document.cookie devuelve una cadena vacía. Puedo imprimir todos los encabezados de respuesta usando xhr.getAllResponseHeaders() pero no puedo acceder al campo Set-Cookie en el objeto xhr.

¿Cómo se puede establecer la cookie dentro de la vista web? ¿O no tengo más remedio que hacer todas las solicitudes de AJAX a través de Obj-C?

Respuesta

2

Puede configurar la cookie en la solicitud que envíe a la vista web.

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:yourURL]; 
[request setValue:yourCookie forHTTPHeaderField:@"Cookie"]; 

Esto se podría hacer en el delegado UIWebView shouldStartLoadWithRequest

+0

@fenderplayer fue contestada su pregunta? –

Cuestiones relacionadas