如何清除WinRT网络视图的cookie

How to clear cookies of WinRT webview?

本文关键字:网络 视图 cookie WinRT 何清除 清除      更新时间:2023-09-26

有人知道如何清除WinRT WebView的cookie吗?如果没有内置方法,任何人都可以在JavaScript中找到解决方案吗?所以我可以通过WebViewInvokeScript方法运行它。Android和iOS有一个简单的1-5行代码来清除cookie,为什么不在WinRT中呢?

在Windows 8中执行以下操作:

Array<String^>^ arguments = ref new Array<String^>(1);
arguments->set(0, "var cookies = document.cookie.split(';');" +
    "for (var i = 0; i < cookies.length; i++) {" +
    "    var cookie = cookies[i];" +
    "    var eqPos = cookie.indexOf('=');" +
    "    var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;" +
    "    document.cookie = name + '=1;expires=Thu, 01 Jan 1970 00:00:00 GMT';" +
    "};");
String^ result = myWebView->InvokeScript("eval", arguments);

在Windows 8.1预览版中,您可以使用HttpCookieManager类。

我不认为你可以删除Javascript中的所有内容,但我会回答你关于能够在WinRT中删除的问题的另一部分。对于您的标准cookie,您可以执行以下操作:

    public void clearCookiesForUri(String uri)
    {
        Windows.Web.Http.Filters.HttpBaseProtocolFilter baseFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter();
        HttpCookieCollection cookieCollection = baseFilter.CookieManager.GetCookies(new Uri(uri));
        Debug.WriteLine("Deleting cookies for " + uri);
        foreach (HttpCookie cookie in cookieCollection)
        {
            Debug.WriteLine(cookie.Name + ": " + cookie.Value);
            baseFilter.CookieManager.DeleteCookie(cookie);
        }
    }

我发现删除HttpOnly cookie的唯一方法是通过WebView.ClearTemporaryWebDataAsync()清除WebView的所有数据。这是相当不分青红皂白的,但它是有效的。