在Xamarin WKWebView和UIWebView之间共享Cookie

时间:2018-12-27 05:30:41

标签: ios xamarin xamarin.ios uiwebview wkwebview

我们知道我们可以在here和其他讨论中在WKWebView之间共享Cookie。

但是可以在WKWebView和UIWebView之间共享Cookie吗?

Http cookie和其他cookie。

有人设法做到了吗?

1 个答案:

答案 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之后可用