我目前正在使用 UWP 开发一个适用于 Windows Phone 10 的应用程序,其中我需要一个 WebView 来在此过程中设置多个 cookie。 WebView 可以实例化多次,并且我注意到 cookie 在多次实例化时不会被清除,这使我的工作流程变得有点困难(例如,用户必须使用 WebView 登录,然后当重新实例化,旧状态将会存在)。
我尝试过使用 clearTemporaryWebDataAsync
到现在有用。更糟糕的是,我事先不知道与 cookie 关联的域,因此我无法执行以下操作:
HttpBaseProtocolFilter myFilter = new HttpBaseProtocolFilter();
HttpCookieManager cookieManager = myFilter.CookieManager;
HttpCookieCollection myCookieJar = cookieManager.GetCookies(new Uri("https://url.com"));
foreach (HttpCookie cookie in myCookieJar)
{
cookieManager.DeleteCookie(cookie);
}
API 中是否有任何内容可以帮助我清除 WebView 的所有 cookie,或者至少获取它们的列表,以便我可以在每个 cookie 上使用 DeleteCookie
?
最佳答案
What is worse is that I don't know in advance the domains associated to the cookies, so I cannot do something like this:
据我所知,除了 ClearTemporaryWebDataAsync
之外,没有清除缓存数据的方法。 ,但您提供的代码片段确实清除了cookie。如果您考虑事先不知道cookie的域,您可以通过NavigationStarting
的WebViewNavigationStartingEventArgs
获取当前的导航Uri。事件句柄。例如,
private void WebViewControl2_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
Uri gotouri = args.Uri;
HttpBaseProtocolFilter myFilter = new HttpBaseProtocolFilter();
HttpCookieManager cookieManager = myFilter.CookieManager;
HttpCookieCollection myCookieJar = cookieManager.GetCookies(gotouri);
foreach (HttpCookie cookie in myCookieJar)
{
cookieManager.DeleteCookie(cookie);
}
}
这将清除当前 Uri 的 cookie。但这会在每次 WebView
导航时清除 cookie。您可能需要设置一个标志来确保 WebView
是否是新实例,具体取决于您的应用逻辑。
另一件事,在为 Windows 10 编译的应用程序中,WebView使用 Microsoft Edge 渲染引擎显示 HTML 内容。清除当前WebView
实例的cookie也可能会清除其他实例,这与您在有新实例时发现cookie仍然存在相同。
关于c# - 清除 WebView 中的所有 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43128225/