我们知道我们可以在here和其他讨论中在WKWebView之间共享Cookie。
但是可以在WKWebView和UIWebView之间共享Cookie吗?
Http cookie和其他cookie。
有人设法做到了吗?
答案 0 :(得分:0)
是否可以在WKWebView和UIWebView之间共享cookie?
WKWebView cookie的问题在于WKWebView发出的请求不会自动携带存储在NSHTTPCookieStorage容器中的cookie。
解决方案:
WKWebView Cookie注入是通过在执行NSHTTPCookieStorage
之前将WKHTTPCookieStore
的内容复制到WKWebView.loadReques()
中来实现的。示例代码如下:
CopyCookieToWebviewWithHandler(() =>
{
NSUrl url = new NSUrl("xxx");
NSUrlRequest request = NSUrlRequest.FromUrl(url);
webView.LoadRequest(request);
});
void CopyCookieToWebviewWithHandler(Action completionHandler)
{
NSHttpCookie[] cookies = NSHttpCookieStorage.SharedStorage.Cookies;
WKHttpCookieStore cookieStore = webView.Configuration.WebsiteDataStore.HttpCookieStore;
if(cookies.Length==0)
{
completionHandler();
return;
}
foreach (NSHttpCookie cookie in cookies)
{
cookieStore.SetCookie(cookie,() =>
{
if(cookies[cookies.Length-1]==cookie)
{
completionHandler();
return;
}
});
}
}
注意: WKHttpCookieStore 仅在iOS 11.0之后可用