Cefsharp 清除 wpf 中的缓存、cookie 和浏览器数据
Cefsharp clearing cache,cookies and browser data in wpf
我正在银行设备上开发一个应用程序,其中使用了 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 列表是空的并且 [= IcookieVisitor
的 12=] 函数从未被调用。它似乎保存在另一部分,并在 CEF 关闭时重置。
我找到答案了!这是因为禁用缓存设置。
通过这样做,它实际上缓存了数据,但无法访问。例如,您无法在不关闭 CEF
的情况下删除 cookie。因此,如果您启用缓存设置(保留为默认设置),您可以使用 Cef.GetGlobalCookieManager().DeleteCookies("", "")
.
删除它们
您可以在调用之前删除缓存文件夹 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);
只需删除您不想删除的内容即可。
我正在银行设备上开发一个应用程序,其中使用了 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 列表是空的并且 [= IcookieVisitor
的 12=] 函数从未被调用。它似乎保存在另一部分,并在 CEF 关闭时重置。
我找到答案了!这是因为禁用缓存设置。
通过这样做,它实际上缓存了数据,但无法访问。例如,您无法在不关闭 CEF
的情况下删除 cookie。因此,如果您启用缓存设置(保留为默认设置),您可以使用 Cef.GetGlobalCookieManager().DeleteCookies("", "")
.
您可以在调用之前删除缓存文件夹 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);
只需删除您不想删除的内容即可。