【问题标题】:Share cookies between Xamarin WKWebView and UIWebView在 Xamarin WKWebView 和 UIWebView 之间共享 cookie
【发布时间】:2018-12-27 05:30:41
【问题描述】:

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

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

Http cookie 和其他 cookie。

有人做到了吗?

【问题讨论】:

  • 嘿,问题解决了吗?
  • 我还没试过。

标签: ios xamarin xamarin.ios uiwebview wkwebview


【解决方案1】:

是否可以在 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 之后可用

【讨论】:

  • 我已经尝试了所有方法,但并非所有 cookie 都在 wkwebview 中可靠设置。如stackoverflow.com/a/49534854/1252151 中所述,必须在实例化 wkwebview 之前设置 cookie。我就是不知道怎么办????
猜你喜欢
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多