2015-05-04 150 views
5

我在我的应用程序中嵌入了一个WKWebView。它使用PHP会话cookie来识别用户。我得到以下调用会话cookie:在此基础上WKWebView不发送会话cookie

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]; 

Can I set the cookies to be used by a WKWebView?我的Cookie添加到文档

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]]; 
} 

我手动设置在初始加载请求的会话cookie:

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

我的问题是,AJAX请求将不包含会话cookie。

+0

也许与我的答案[这里]重复(https://stackoverflow.com/a/46822550/4712692) – Xingxing

回答

0

也许你的cookies是发送的Set-Cookie在302 response.Try这YWKWebView只是取代你的WKWebView