Как управляются файлы cookie в UIWebView и WKWebView? - PullRequest
1 голос
/ 17 июня 2020

Я перехожу с UIWebView на WKWebView и сталкиваюсь с проблемой управления файлами cookie. Поскольку приложение должно поддерживать iOS 10, я не добавляю файлы cookie через WKHTTPCookieStore, я следую приведенному ниже коду:

- (void)loadURL:(NSString *)url
{
    NSMutableURLRequest * req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray* cookies = [storage cookiesForURL:[NSURL URLWithString:url]];

    NSMutableString *cookieStr = [NSMutableString string];
    for (NSHTTPCookie *cookie in cookies) {
           if (cookieStr.length) {
               [cookieStr appendString:@"; "];
           }
           [cookieStr appendFormat:@"%@=%@", cookie.name, cookie.value];
    }
    NSLog(@"Cookie: %@",cookieStr);
    [req addValue:cookieStr forHTTPHeaderField:@"Cookie"];

    NSMutableString *cookieStrAfterDocLoad = [NSMutableString string];
    for (NSHTTPCookie *cookie in cookies) {
        [cookieStrAfterDocLoad appendFormat:@"document.cookie = '%@=%@';", cookie.name, cookie.value];
    }

    WKUserScript *userScript = [[WKUserScript alloc] initWithSource: cookieStrAfterDocLoad
                                                      injectionTime: WKUserScriptInjectionTimeAtDocumentStart
                                                   forMainFrameOnly:NO];

    [self.wkWebView.configuration.userContentController addUserScript:userScript];

    [self.wkWebView loadRequest:req];
}

Мне нужно добавить файлы cookie после загрузки документа, чтобы поддерживать сеанс для внутренних навигация. Это неправильный способ, так как новые файлы cookie могут быть добавлены или изменены во время загрузки страницы. Это необходимо сделать во многих других контроллерах.

Мой вопрос в том, как я могу узнать, добавлялись ли файлы cookie каждый раз для loadRequst в UIWebview, или есть ли другой правильный способ справиться с этой ситуацией в WKWebview в качестве некоторых загрузка веб-страницы может не нуждаться в файлах cookie? Это правильный способ добавления файлов cookie для каждого loadRequest?

...