• MFC调用CEF实现单页面单COOKIE管理《转》


    cookie简单介绍

    cookie存储了网站的一些很重要的信息,如用户身份信息、常用设置、设置地理位置等等各种信息。
    使用cef访问网站时,如果设置了CefSettings.cache_path参数,则cookie等相关信息会保存在该目录下,若未设置则会保存在程序的内存中。

        CefSettings settings;
        CefString(&settings.cache_path) = L"D:\cefcookie";
    
    C++

    下图是访问 www.baidu.com 页面保存在指定位置的网站数据,可以看的其中也包括Cookies信息:

    多页面共享cookie问题

    有时某个网站我们想登录多个账号,但是会发现登录新的账号后,旧账号就退出了,即便打开多个浏览器操作结果也是一样的。这是因为新登录账号的cookie覆盖了旧账号的cookie,旧账号自然就失效了。
    google chrome提供了一种“无痕窗口”模式,在菜单栏可以打开无痕窗口,该模式不会保存cookie等网站信息,旨在保护用户隐私。发现在该模式下登录的账号和在普通页面上登录的账号,可以同时保持在线,其实就是因为cookie等信息存储在不同的位置,不会互相覆盖。

    若设置了CefSetting.cache_path,则所有页面cookie都会保存在该目录下,当登录某网站多个账号时,cookie被覆盖,就只能保持一个账号在线了。若不设置cache_path则cookie会保存在内存中,登录多个账号时cookie同样会被覆盖。

    单页面cookie存储位置设置

    解决上述问题,自然想到把每个页面的cookie单独存储就好了。在创建浏览器时通过CefRequestContextSettings可以指定页面cookie等信息存储位置,如下代码:

    // 创建浏览器
    void CefHelper::CreateBrowser(CWnd* parent, CRect rc, CString strUrl, CString strCookiePath, bool bShow)
    {
        m_handler = new CSimpleHandler(false);
    
        CefWindowInfo winInfo;
        winInfo.SetAsChild(parent->GetSafeHwnd(), rc);
    
        CefRequestContextSettings settings;
        CefString(&settings.cache_path).FromWString(wstring(strCookiePath));
        CefRefPtr<CefRequestContextHandler> handlerCookie = new WXRequestContextHandler(wstring(strCookiePath).c_str());
        CefRefPtr<CefRequestContext> rContext = CefRequestContext::CreateContext(settings, handlerCookie);
    
        CefBrowserSettings browserSettings;
        CefBrowserHost::CreateBrowser(winInfo, m_handler, wstring(strUrl).c_str(), browserSettings, rContext);
    }
    
    C++
     

    文章导航

     http://www.itzhi365.com/?p=253

  • 相关阅读:
    ubuntu1804安装二进制版(tgz版编译版)mongdb4.2版的笔记
    ubuntu1804安装二进制版(编译版)nodejs12
    ubuntu1804安装pycharm2019.3.4版本及永久激活的方法
    ubuntu1804搜狗拼音输入法突然失效的解决办法
    2020ruby和ruby on rails想说再爱你不容易:安装rails失败解决办法
    ubuntu1804安装rubymine的IDE笔记
    ubuntu系统mysql5.7忘记/设置root的坑
    使用matplotlib时报which is a non-GUI backend的解决办法
    python文件操作笔记
    python字符串string的使用笔记
  • 原文地址:https://www.cnblogs.com/wainiwann/p/10953658.html
Copyright © 2020-2023  润新知