2012-03-20 12 views
5

Mam aplikację na iOS, do której ładuję zawartość html w widoku internetowym. HTML to strona logowania, w której poświadczenia użytkownika są wysyłane do serwera za pośrednictwem ajax i odbierana jest odpowiedź o powodzeniu/niepowodzeniu uwierzytelniania. Teraz odpowiedź zawiera cookie (w polu Set-Cookie nagłówku), które można uchwycić na stronie Objective-C jak tak,Nie można odczytać cookie w przeglądarce UIWebview za pomocą document.cookie

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

tej samej odpowiedzi zawiera również responseText którego używam w przeglądarce:

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

Teraz potrzebuję pliku cookie do wykonania kolejnych żądań ajaxowych (po stronie logowania). Jednak plik cookie nie jest ustawiony wewnątrz przeglądarki internetowej. Poszukując document.cookie zwraca pusty ciąg. Mogę wydrukować wszystkie nagłówki odpowiedzi za pomocą xhr.getAllResponseHeaders(), ale nie mogę uzyskać dostępu do pola Set-Cookie w obiekcie xhr.

W jaki sposób można ustawić plik cookie w widoku webowym? Czy nie mam innego wyjścia, jak tylko wykonać wszystkie żądania ajax za pośrednictwem Obj-C?

Odpowiedz

2

Możesz ustawić plik cookie w żądaniu, które wysyłasz do widoku WWW.

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

Można to zrobić w delegata UIWebView shouldStartLoadWithRequest

+0

@fenderplayer zrobił to odpowiedź na pytanie? –

Powiązane problemy