MFC调用CEF实现单页面单COOKIE管理《转》
cookie简单介绍
cookie存储了网站的一些很重要的信息,如用户身份信息、常用设置、设置地理位置等等各种信息。
使用cef访问网站时,如果设置了CefSettings.cache_path参数,则cookie等相关信息会保存在该目录下,若未设置则会保存在程序的内存中。
CefSettings settings;
CefString(&settings.cache_path) = L"D:\\cefcookie";
下图是访问 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);
}
文章导航
http://www.itzhi365.com/?p=253
MFC调用CEF实现单页面单COOKIE管理《转》的更多相关文章
- 电商网站前端架构#1 多页面 vs 单页面
课程地址:http://www.imooc.com/learn/186 讲师:远人 课程基础: html css js ,做过一些项目. 多页面 我们往常使用的web服务大多是多页面形式,依靠后端的架 ...
- vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 "invalid signature"错误解决方案
项目背景 vue-cli生成的单页面项目,router使用history模式.产品会在公众号内使用,需要添加微信JSSDK,做分享相关配置. 遇到的问题 相关配置与JS接口安全域名都已经ok,发布后, ...
- 快速构建H5单页面切换骨架
在Web App和Hybrid App横行的时代,为了拥有更好的用户体验,单页面应用顺势而生,单页面应用简称`SPA`,即Single Page Application,就是只有一个HTML页面的应用 ...
- webpack+react+antd 单页面应用实例
React框架已经火了好长一段时间了,再不学就out了! 对React还没有了解的同学可以看看我之前的一篇文章,可以快速简单的认识一下React.React入门最好的实例-TodoList 自己从开始 ...
- 浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore
本文转载自:http://www.cnblogs.com/kenkofox/p/4648472.html 上一篇<浅谈HTML5单页面架构(一)--requirejs + angular + a ...
- ionic单页面应用中微信分享的问题总结
首先说一下 ionic 是单页面应用,也就是说整个项目就有一个index.html, 那么问题就就来了, 如果我们不同的页面要分享给大家的是不同的链接和图片,应该怎么去做呢? 这就是我们今天要总结的东 ...
- angular(3)服务 --注入---自定义模块--单页面应用
ng内部,一旦发生值改变操作,如$scope.m=x,就会自动轮询$digest队列,触发指定的$watch,调用其回调函数,然后修改dom树. 干货:https://github.com/xufei ...
- Ember.js实现单页面应用程序
1.1.1 摘要 单页应用程序 (SPA) 是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序. SPA使用AJAX和HTML5创建流畅且响应迅速的Web应用程序,不会经常 ...
- phpcms-v9系统搭建wap网站及单页面
如需要绑定域名为wap.domain.com,作下如操作: 一.把wap.domain.com域名绑定到你的这个网站主机上. 二.在网站后台——模块——手机门户域名里面填写“http://wap.do ...
随机推荐
- java对象序列化和反序列化,redis存入和获取对象
最近使用redis发现直接存储序列化后的对象更方便,现提供java序列化和反序列化的代码 1.序列化代码: public static byte[] serialize(Object object) ...
- 详解微信公众平台UnionID和OpenID的区别
OpenID: 普通用户的标识,对当前开发者帐号唯一.一个openid对应一个公众号. UnionID :用户统一标识.针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的. 微信的 ...
- Keil、uVision、RealView、MDK、Keil C51之间的区别比较
我们要区别的概念:KEIL UVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251 从接触MCS-51单片机开始 ...
- php初识2
php概述 什么是php,PHP语言的优势,PHP5的新特性,PHP的发展趋势,PHP的应用领域. PHP是超文本预处理器,是一种服务器端,跨平台,HTML嵌入式的脚本语言,具有c语言,Java语言, ...
- python高级特性-生成器
在python中一边循环一边计算的机制成为生成器(generator) 在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行. 生成list > ...
- Div+CSS总结
之前最早接触是在牛腩新闻发布系统中,当时看到这些自己是一头雾水,不过好在我们已经形成了这样的学习习惯,先实践在接触理论,这样再学习理论的时候就会想到当初我是怎样的迷茫,这样自己印象更深刻. DIV+C ...
- dt开发之-自定义函数获取分类名称
需要在api/extend.func.php 文件中加入的函数 获取分类名称 cat_name($catid) 传入分类id function cat_name($catid) { global $d ...
- git常用命令总结--原创
0.git status 仓库状态1.git add 工作区-->暂存区2.git commit 暂存区-->版本库3.git log 查看日志4.git reset --hard hea ...
- 适合于做项目与团队管理的工具(Choerodon)
官网链接:http://choerodon.io/zh/ 此处不做太多的介绍,需要了解的朋友进入官网进行查看. Choerodon猪齿鱼开源多云技术平台,是基于开源技术Kubernetes,Istio ...
- SQL 语句中关于 NULL 的那些坑
问题描述 今天在跟进公司内部测试平台线上问题的时候,发现一个忽略已久的问题. 为了简化问题描述,将其进行了抽象. 有一张数据表qms_branch,里面包含了一批形式如下所示的数据: id name ...