2012-03-20 1 views
5

Ho un'app iOS in cui sto caricando il contenuto html all'interno di una webview. L'html è una pagina di accesso in cui le credenziali dell'utente vengono inviate al server tramite ajax e viene ricevuta una risposta di successo/errore di autenticazione. Ora, la risposta contiene un cookie (nel campo Set-Cookie intestazione), che posso catturare sul lato Objective-C in questo modo,Impossibile leggere il cookie nel browser UIWebview con document.cookie

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

La stessa risposta contiene anche una responseText che uso all'interno del browser:

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

Ora ho bisogno del cookie per effettuare ulteriori richieste ajax (dopo la pagina di accesso). Tuttavia, il cookie non è impostato all'interno del browser webview. Cerchi document.cookie restituisce una stringa vuota. Posso stampare tutte le intestazioni di risposta usando xhr.getAllResponseHeaders() ma non riesco ad accedere al campo Set-Cookie nell'oggetto xhr.

Come si può impostare il cookie all'interno della visualizzazione Web? O non ho altra scelta che fare tutte le richieste di ajax tramite Obj-C?

risposta

2

È possibile impostare il cookie nella richiesta che si invia alla visualizzazione Web.

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

questo potrebbe essere fatto nel delegato UIWebView shouldStartLoadWithRequest

+0

@fenderplayer abbiamo risposto alla tua domanda? –