Я внедряю WKWebView в свое приложение. Он использует cookie сеанса PHP для идентификации пользователя. Я получаю куки сессии с помощью следующего вызова: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? я добавить печенье к документу
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]];
}
И я вручную установить куки сессии в запросе начальной загрузки:
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 сеанса.
Возможно дублирование с моим ответом [здесь] (https://stackoverflow.com/a/46822550/4712692) – Xingxing