在 Xamarin WKWebView 和 UIWebView 之间共享 cookie



我们知道我们可以在WKWebViews之间共享cookie,如此处和其他讨论中所讨论的那样。

但是是否可以在WKWebView和UIWebView之间共享cookie?

Http cookie 和其他 cookie。

有人设法做到这一点吗?

是否可以在WKWebView和UIWebView之间共享cookie?

WKWebView cookie 的问题在于,WKWebView 发出的请求不会自动携带存储在 NSHTTPCookieStorage 容器中的 Cookie。

溶液:

WKWebView Cookie注入是通过在执行WKWebView.loadReques()之前将NSHTTPCookieStorage的内容复制到WKHTTPCookieStore来实现的。示例代码如下:

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

相关内容

  • 没有找到相关文章

最新更新