【问题标题】:How to clear cookies of WinRT webview?如何清除 WinRT webview 的 cookie?
【发布时间】:2013-08-18 04:21:35
【问题描述】:

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

【问题讨论】:

    标签: javascript windows-8 windows-runtime microsoft-metro windows-store-apps


    【解决方案1】:

    在 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 Preview 中,您可以使用 HttpCookieManager 类。

    【讨论】:

    • @Xyroid JavaScript 不能接触 HttpOnly cookie,adidas.ca 的 cookie 是 HttpOnly,即: Set-Cookie: dwsid=EM8HN23NpFToI_2pEeTJ0kL8Oz1XYkq-VqKPG8tH7AYmsuPe96bcqSLxsx9oqPhamFA-8ZKfRP8YH3FiFEPPz;路径=/; HttpOnly
    • 那么有什么解决方案吗?
    【解决方案2】:

    我不认为您可以删除 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 的数据。这很不分青红皂白,但确实有效。

    【讨论】:

      猜你喜欢
      • 2017-07-15
      • 2015-11-22
      • 2017-08-24
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 2017-10-15
      相关资源
      最近更新 更多