WKWebView不发送会话cookie

Ist*_*ády 5 cookies session-cookies ios wkwebview

我在我的应用程序中嵌入了WKWebView.它使用PHP会话cookie来识别用户.我通过以下调用获取会话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];
Run Code Online (Sandbox Code Playgroud)

基于此:我可以设置WKWebView使用的cookie吗?我将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]];
}
Run Code Online (Sandbox Code Playgroud)

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

NSMutableURLRequest *pageLoadRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[pageLoadRequest setHTTPMethod:@"GET"];
[pageLoadRequest setHTTPShouldHandleCookies:YES];
[pageLoadRequest setAllHTTPHeaderFields:[NSHTTPCookie requestHeaderFieldsWithCookies:[NSHTTPCookieStorage sharedHTTPCookieStorage].cookies]];
[_webView loadRequest:pageLoadRequest];
Run Code Online (Sandbox Code Playgroud)

我的问题是AJAX请求不包含会话cookie.

Xin*_*ng 0

也许您的 cookie 是Set-Cookie在 302 响应中发送的。尝试用这个YWKWebView代替您的WKWebView.