ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Chromium 的 Cookie 机制

2022-07-01 12:04:20  阅读:240  来源: 互联网

标签:COOKIES 持久 const SESSION Cookie cookie 机制 Chromium


转载来自:https://blog.wandoer.com/coding/chromium-%e7%9a%84-cookie-%e6%9c%ba%e5%88%b6.htm#more-1341

Cookie 指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据,它是一种古老的技术, 由网景公司的前雇员卢·蒙特利在1993年3月发明。
Cookie 格式是一系列键值对, 以 ; 组合,如下

 
1 TBLkisOn=0; GeoIP=US:CA:Los_Angeles:34.05:-118.26:v4; mwPhp7Seed=9d0

当然, Cookie还有更多的内容,如创建时间,过期时间等,对应的域等等。一般而言,为了安全只允许页面访问该域下的Cookie.
根据 Cookie 的时效性可以将 Cookie 分为两类,一种是会话型Cookie (Session Cookie), 只保存于内存中, 当浏览器退出的时候,即清除这些 Cookie. 第二种是持续型 Cookie (Persistent Cookie),也就是当浏览器退出的时候仍然保留的Cookie.
Chromium 中Cookie操作的类结构如下所示: 

其中 CookieStore 是主要的导出接口,CookieMonster 是重要的实现接口,它相当于是 Cookie 的管理器。它有几个作用:一是实现 CookieMonster 中的接口,二是报告前者的事件,如 Cookie 更新信息等,三是 Cookie对象(即 CanonicalCookie) 的集合。
PersistentCookieStore 持久化类,SQLitePersistentCookieStore 是持久化的具体实现,负责实际的存储动作。
Chrome 的 Cookie使用 Sqlite存储,是位于 %AppData%\Local\Google\Chrome\User Data\Default 目录下的 Cookies 文件。

 

创建一个 CookieStore 对象的方式是调用 content::CreateCookieStore(const CookieStoreConfig& config) 接口,CookieStoreConfig 定义如下:

 
1 2 3 4   CookieStoreConfig(const base::FilePath& path,                     SessionCookieMode session_cookie_mode,                     storage::SpecialStoragePolicy* storage_policy,                     net::CookieMonsterDelegate* cookie_delegate);

其中 path 是 cookie 文件(一个 sqlite 数据库文件) 的路径,如果该路径不存在,则会创建一个会话型的 CookieStoresession_cookie_mode 的定义及解释如下:

 
1 2 3 4 5 enum SessionCookieMode {     EPHEMERAL_SESSION_COOKIES, //不作持久化     PERSISTANT_SESSION_COOKIES, //如果下次以 RESTORED_SESSION_COOKIES 的方式打开cookie,则可以恢复持久化     RESTORED_SESSION_COOKIES //持久化存储   };

GetCookiesWithOptionsAsync 的定义如下:

 
1 2 3 void GetCookiesWithOptionsAsync(const GURL& url,                                           const CookieOptions& options,                                           GetCookiesCallback callback)

其中 callback 应为 void(const std::string& cookie) 的 functional, 可以使用 base::Bind 来绑定回调函数。务必要注意 CookieStore 的生命周期要大于回调的生命周期,否则回调将不会被 invoke.

标签:COOKIES,持久,const,SESSION,Cookie,cookie,机制,Chromium
来源: https://www.cnblogs.com/Galesaur-wcy/p/16434070.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有