c# - 清除 WebView 中的所有 cookie

标签 c# cookies webview uwp

我目前正在使用 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的域,您可以通过NavigationStartingWebViewNavigationStartingEventArgs获取当前的导航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/

相关文章:

c# - 在 XSLT 扩展方法的返回值上使用 Xpath

c# - SAPI 5语音合成和C#

c# - 需要一个更优雅的模式来关闭 TcpListener

c# - 从 WCF 发送的响应中删除 utf-8 标识符 (BOM)

android - Android WebView 中的 Flash - 分层问题

security - 使用JWT保护SPA的最佳做法

PHP SameSite session 问题, session 不起作用

javascript - 我可以在 jsonp 请求的响应中设置 cookie 吗?

android - 如何在 WebView 中全屏显示 youtube 视频

android - 在 webview 中播放本地视频