2015-05-04 22 views
5

Sto incorporando un WKWebView nella mia app. Utilizza un cookie di sessione PHP per identificare l'utente. Ottengo il cookie di sessione con la seguente chiamata:WKWebView non invia cookie di sessione

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]]; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPBody:[NSJSONSerialization dataWithJSONObject:jsonobject options:0 error:&err]]; 
NSHTTPURLResponse *response = nil; 
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 

Sulla base di questo: Can I set the cookies to be used by a WKWebView? aggiungo i biscotti al documento

for (NSHTTPCookie* cookie in [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies) 
{ 
    NSString *javascript = [NSString stringWithFormat:@"document.cookie = '%@=%@';", [cookie name], [cookie value]]; 
    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init]; 
    WKUserContentController *ucController = [[WKUserContentController alloc] init]; 
    WKProcessPool *processPool = [[WKProcessPool alloc] init]; 
    config.processPool = processPool; 
    config.userContentController = ucController; 
    [ucController addUserScript:[[WKUserScript alloc] initWithSource:javascript injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO]]; 
} 

E io impostare manualmente il cookie di sessione nella richiesta carico iniziale:

NSMutableURLRequest *pageLoadRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]]; 
[pageLoadRequest setHTTPMethod:@"GET"]; 
[pageLoadRequest setHTTPShouldHandleCookies:YES]; 
[pageLoadRequest setAllHTTPHeaderFields:[NSHTTPCookie requestHeaderFieldsWithCookies:[NSHTTPCookieStorage sharedHTTPCookieStorage].cookies]]; 
[_webView loadRequest:pageLoadRequest]; 

Il mio problema è che le richieste AJAX non conterranno il cookie di sessione.

+0

Forse duplicato con la mia risposta [qui] (https://stackoverflow.com/a/46822550/4712692) – Xingxing

risposta

0

Forse i tuoi cookie vengono inviati come Set-Cookie in 302 risposta.Prova questo YWKWebView semplicemente in sostituzione del tuo WKWebView.