代码之家  ›  专栏  ›  技术社区  ›  Johannes Sasongko

一个CEF实例中的多个用户配置文件/会话

  •  1
  • Johannes Sasongko  · 技术社区  · 9 年前

    是否可以在一个CEF(Chromium Embedded Framework)实例中同时运行多个具有单独cookie、历史记录、本地存储等的用户配置文件?目标是允许在一个窗口中并排浏览多个“会话”(实际上是一个OpenGL应用程序)。

    我研究了两种可能的解决方案,每个方案都有自己的问题:

    使用 CefCookieManager

    这可以通过 creating multiple CefCookieManager s 。然而,似乎没有类似的历史和本地存储API,它们现在仍然共享。

    使用 CefSettings::cache_path

    CefSettings settings;
    CefString(&settings.cache_path).FromASCII("C:\\CefCache");
    CefInitialize(args, settings, app, nullptr);
    

    这里的问题是 CefSettings 与全局CEF实例相关联,而不是与每个浏览器/客户端相关联。


    有没有我没有发现的方法可以做到这一点?

    1 回复  |  直到 9 年前
        1
  •  2
  •   Czarek Tomczak    9 年前

    如果只是关于cookie和本地存储,并且您使用自定义方案处理程序或请求拦截来托管内容,那么您可以为每个配置文件使用不同的域/子域。请参阅本主题以获取参考: http://www.magpcss.org/ceforum/viewtopic.php?f=6&t=11695 .

    关于历史,您可以使用OnBeforeBrowse回调自行实现历史。

    在上面提到的主题中,还提到在技术上可以为每个CefRequestContext指定不同的缓存路径(可以在浏览器创建期间提供)。因此,为CEF开发补丁可能是另一种选择。

    编辑 :CEF修订版2040增加了对每个请求上下文的存储和权限完全隔离的支持,请参阅第1044期中的注释7: https://code.google.com/p/chromiumembedded/issues/detail?id=1044#c7