【问题标题】:CefSharp Wpf , Session Cookie for multiple instancesCefSharp Wpf,多个实例的会话 Cookie
【发布时间】:2017-03-20 00:01:28
【问题描述】:

我很好奇 CEF Sharp 是否有可能以某种方式将浏览器的每个实例与其他实例隔离开来。

我正在创建 4 个浏览器实例。登录实例, 其他 3 个实例也立即登录。

是否有可能在我们从 Nuget 获得的当前版本中以某种方式实现?

【问题讨论】:

    标签: wpf cefsharp chromium-portable


    【解决方案1】:

    只需使用此代码,它对我有用。

    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;
    
        }
    

    【讨论】:

    • 因为他确实要求“将每个浏览器实例与其他实例隔离”,但您建议的答案完全相反 - 通常为所有实例设置自定义文件夹。
    【解决方案2】:

    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);
    

    这让我头疼了一段时间,这似乎终于解决了这个问题。

    【讨论】:

    • 添加到这个 - 如果我想基本上为每个使用不同的配置文件“文件夹”,所以它可以在会话之间持久化 - 这将在哪里设置?谢谢
    • 我想我找到了。 RequestContextSettings.CachePath = ""
    猜你喜欢
    • 2010-11-29
    • 1970-01-01
    • 2020-01-06
    • 2023-03-25
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 2013-10-08
    • 2020-12-03
    相关资源
    最近更新 更多