WKWebView не отправляет файл cookie сеанса

Я встраиваю WKWebView в свое приложение. Он использует файл cookie сеанса PHP для идентификации пользователя. Я получаю файл 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];

Исходя из этого: Могу ли я установить файлы cookie на использоваться 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 сеанса.


person István Csanády    schedule 04.05.2015    source источник
comment
Возможно, продублируйте мой ответ здесь   -  person Xingxing    schedule 20.10.2017


Ответы (1)


Возможно, ваши файлы cookie отправляются как Set-Cookie в ответе 302. Попробуйте этот YWKWebView просто вместо вашего WKWebView.

person Xingxing    schedule 19.10.2017