【发布时间】:2017-03-20 00:01:28
【问题描述】:
我很好奇 CEF Sharp 是否有可能以某种方式将浏览器的每个实例与其他实例隔离开来。
我正在创建 4 个浏览器实例。登录实例, 其他 3 个实例也立即登录。
是否有可能在我们从 Nuget 获得的当前版本中以某种方式实现?
【问题讨论】:
标签: wpf cefsharp chromium-portable
我很好奇 CEF Sharp 是否有可能以某种方式将浏览器的每个实例与其他实例隔离开来。
我正在创建 4 个浏览器实例。登录实例, 其他 3 个实例也立即登录。
是否有可能在我们从 Nuget 获得的当前版本中以某种方式实现?
【问题讨论】:
标签: wpf cefsharp chromium-portable
只需使用此代码,它对我有用。
public MainWindow()
{
CefSharp.CefSettings settings = new CefSharp.CefSettings();
settings.CachePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\CEF";
CefSharp.Cef.Initialize(settings);
InitializeComponent();
browser = new ChromiumWebBrowser("https://google.com/");
browser.BrowserSettings.ApplicationCache = CefSharp.CefState.Disabled;
}
【讨论】:
从revision 2040 开始,CEF 现在添加了对基于请求上下文的存储和权限(缓存、cookie、localStorage、访问授权等)的完全隔离的支持。这现在也在 CEFSharp 中。
要确保多个实例之间没有会话重叠,只需创建一个新的 RequestContextSettings 对象,将 PersistSessionCookies 和/或 PersistUserPreferences 设置为 false,然后在创建新的 RequestContext 时将其分配给您的浏览器 - 我不确定是否将它们设置为false 对于多个实例是完全必要的,也许其他人可以提供一些信息。
//usually ChromiumWebBrowser setup goes above this
RequestContextSettings requestContextSettings = new RequestContextSettings();
requestContextSettings.PersistSessionCookies = false;
requestContextSettings.PersistUserPreferences = false;
webBrowser.RequestContext = new RequestContext(requestContextSettings);
这让我头疼了一段时间,这似乎终于解决了这个问题。
【讨论】: