Xamarin WKWebView和Cookies

问题描述 投票:0回答:2

我有一个Xamarin Forms应用程序,该应用程序使用cookie来跟踪登录状态,并且同时使用HTTPRequest和Webview,因此两者都需要共享cookie。使用UIWebView可以共享这些cookie,而无需我进行任何额外的管理。使用WKWebView似乎并非如此。我一直在寻找有关如何使用WKWebView处理cookie的说明,或如何在这两个对象之间手动检索和设置cookie的示例,但一直找不到。将UIWebView与WKWebView一起使用时,如何获得我依赖的cookie行为?

cookies xamarin.forms xamarin.ios wkwebview
2个回答
0
投票

您可以创建自定义WKNavigationDelegate。

public class MyCustomWebViewDelegate : WKNavigationDelegate
{
    public override void DecidePolicy(WKWebView webView, WKNavigationAction navigationAction, Action<WKNavigationActionPolicy> decisionHandler)
    {
        var jCookies = Appl.FlurlClient.Cookies.Values;
        NSHttpCookie[] nsHttpCookies = jCookies.Where(c => c != null).Select(c => new NSHttpCookie(c)).ToArray();

        foreach (var c in nsHttpCookies)
        {
            webView.Configuration.WebsiteDataStore.HttpCookieStore.SetCookie(c);
        }
        decisionHandler(WKNavigationActionPolicy.Allow);
    }
}

并以::身份分配给webView>

webView.NavigationDelegate = new MyCustomWebViewDelegate();

0
投票

[iOS 12以上与从WKWebview获取cookie有所不同。您可以尝试通过从WKNavigationDelegate

© www.soinside.com 2019 - 2024. All rights reserved.