在 Xamarin WKWebView 和 UIWebView 之间共享 cookie
Posted
技术标签:
【中文标题】在 Xamarin WKWebView 和 UIWebView 之间共享 cookie【英文标题】:Share cookies between Xamarin WKWebView and UIWebView 【发布时间】:2018-12-27 05:30:41 【问题描述】:我们知道我们可以在 WKWebViews 之间共享 cookie,正如在 here 和其他讨论中讨论的那样。
但是是否可以在 WKWebView 和 UIWebView 之间共享 cookie?
Http cookie 和其他 cookie。
有人做到了吗?
【问题讨论】:
嘿,问题解决了吗? 我还没试过。 【参考方案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 中可靠设置。如***.com/a/49534854/1252151 中所述,必须在实例化 wkwebview 之前设置 cookie。我就是不知道怎么办????以上是关于在 Xamarin WKWebView 和 UIWebView 之间共享 cookie的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Xamarin IOS 中捕获 WkWebView 的屏幕
iOS 让 WKWebView 支持 NSURLProtocol
Xamarin iOS WKWebView 不显示谷歌recaptcha
WKWebView CanPerform 上的 Xamarin iOS 死锁