在WKWebView中丢失cookie

jir*_*uml 10 cookies nsmutableurlrequest wkwebview

当我WKWebView使用身份验证cookie 创建新请求并发送请求时,WKWebView正确加载受保护的网页:

let req = NSMutableURLRequest(URL: NSURL(string: urlPath)!)
let headers = NSHTTPCookie.requestHeaderFieldsWithCookies([myAuthCookie]);
req.allHTTPHeaderFields = headers;
webView.loadRequest(req)
Run Code Online (Sandbox Code Playgroud)

问题是,当用户点击网页中的任何链接时,新请求将WKWebView丢失身份验证cookie并重定向到登录页面.Cookie域和路径已填充且正确.

我知道这里WKWebView提到的功能缺失.

提前感谢任何想法.

The*_*ker 7

最好的办法是将你的cookie存储到

[NSHTTPCookieStorage sharedHTTPCookieStorage]
Run Code Online (Sandbox Code Playgroud)

然后,每次要加载请求时,请调用此函数:

- (void)loadRequest:(NSURLRequest *)request {
        if (request.URL) {
            NSDictionary *cookies = [NSHTTPCookie requestHeaderFieldsWithCookies:[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:request.URL]];
            if ([cookies objectForKey:@"Cookie"]) {
                NSMutableURLRequest *mutableRequest = request.mutableCopy;
                [mutableRequest addValue:cookies[@"Cookie"] forHTTPHeaderField:@"Cookie"];
                request = mutableRequest;
            }
        }

        [_wkWebView loadRequest:request];
}
Run Code Online (Sandbox Code Playgroud)

它从共享cookie中提取正确的cookie并将其包含在您的请求中


Seb*_*tin 0

您可以在 we 视图中注入一些 javascript 来加载 cookie,这样 web 视图发起的请求也会有您的 cookie。有关更多详细信息,请参阅此问题的答案:

/sf/answers/1860411241/