【问题标题】:Cefsharp clearing cache,cookies and browser data in wpfCefsharp 清除 wpf 中的缓存、cookie 和浏览器数据
【发布时间】:2018-05-24 04:41:03
【问题描述】:

我正在使用 cefsharp 浏览器作为其中一部分的银行设备上开发应用程序。因为这个应用程序将被任何人使用,它不应该保存下一个用户可以看到的前一个用户的任何数据。我想在关闭后清除所有缓存的浏览器数据。

public void InitBrowser()
    {
        settings = new CefSettings();
        settings.CachePath = AppDomain.CurrentDomain.BaseDirectory + "cache";
        settings.CefCommandLineArgs.Add("disable-application-cache", "1");
        settings.CefCommandLineArgs.Add("disable-session-storage", "1");
        if (!Cef.IsInitialized) Cef.Initialize(settings);
        webBrowser = new CefSharp.Wpf.ChromiumWebBrowser();
        MainGrid.Children.Add(webBrowser);
    }

我想在调用名为WebPages_Exit 的函数后清除所有缓存的数据。如何在不删除浏览器实例或关闭 CEF 的情况下删除所有缓存数据,因为 CEF 无法初始化两次,并且在处理后创建另一个浏览器实例不起作用。

我在ICookieVisitor 中实现了visit 函数来保存cookie,并使用了deleteCookies 或禁用缓存cefSetting 命令等方法,但没有任何效果,因为cookie 列表为空且IcookieVisitorvisit 函数永远不会叫。似乎它被保存在另一部分,只是在 CEF 关闭时重置。

【问题讨论】:

    标签: wpf cookies browser-cache cefsharp


    【解决方案1】:

    您可以在调用Cef.Initialize之前删除缓存文件夹:

    Directory.Delete(cacheDirBase + "\\blob_storage", true);
    Directory.Delete(cacheDirBase + "\\Cache", true);
    Directory.Delete(cacheDirBase + "\\Code Cache", true);
    Directory.Delete(cacheDirBase + "\\GPUCache", true);
    Directory.Delete(cacheDirBase + "\\Local Storage", true);
    Directory.Delete(cacheDirBase + "\\Session Storage", true);
    

    只要删除你不想删除的。

    【讨论】:

      【解决方案2】:

      我找到了答案!这是因为禁用缓存设置。 通过这样做,它实际上缓存了数据,但将无法访问。例如,您无法在不关闭CEF 的情况下删除 cookie。因此,如果您启用缓存设置(将其保留为默认设置),您可以使用Cef.GetGlobalCookieManager().DeleteCookies("", "") 删除它们。

      【讨论】:

      • DeleteCookies() 只会删除cookies,不会删除css、js等缓存数据。为此我认为您需要使用Browser.GetBrowser.Reload(True)
      • 请注意,Cef.GetGlobalCookieManager() 可以根据某些条件返回 null。
      猜你喜欢
      • 2020-02-29
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      相关资源
      最近更新 更多