admin 发表于 2022-3-12 20:05:10

Cookie 管理

hpsocketCookie 管理
HP-Socket v4.2.x 版本开始,为 HTTP 客户端组件(HttpClient、HttpAgent)提供进程级
别的 Cookie 管理器,管理器实现了标准 HTTP Cookie 功能,支持 Max-Age、expires、httpOnly、
secure 等。

如图 4.3-1 所示,管理器在内存中维护所有 HTTP 客户端组件产生的 Cookie,可在不同
连接、不同组件对象间共享 Cookie,并支持 Cookie 序列化与反序列化。
客户端组件默认设置为使用 Cookie,只要客户端组件设置为使用 Cookie,它接收到的
Cookie 会自动存入管理器;当发送 HTTP 请求时会自动从管理器中加载 Cookie。
如果组件设置为不使用 Cookie(设置方法:SetUseCookie(FALSE)),它接收到的 Cookie
不会被解析,不会存入管理器;发送 HTTP 请求时也不会从管理器中加载 Cookie。
注意:管理器内部使用读写锁控制 Cookie 存取,高并发下会带来一些性能损失。如果
确定组件不会用到 Cookie,可设置为不使用 Cookie。
HP-Socket 提供一些管理函数操作管理器,也提供 Cookie 辅助函数便于应用程序处理
Cookie:
 从文件加载 Cookie:
BOOL HP_HttpCookie_MGR_LoadFromFile(lpszFile, bKeepExists)
✓ lpszFile -- 文件
✓ bKeepExists -- 是否保留管理器中原有的 Cookie
 保存 Cookie 到文件:
BOOL HP_HttpCookie_MGR_SaveToFile(lpszFile, bKeepExists)
✓ lpszFile -- 文件
✓ bKeepExists -- 是否保留文件中原有的 Cookie
 清理 Cookie:
BOOL HP_HttpCookie_MGR_ClearCookies(lpszDomain, lpszPath)
✓ lpszDomain -- 域,为空则表示所有域
✓ lpszPath -- 路径,为空则表示所有路径
 清理过期 Cookie:
BOOL HP_HttpCookie_MGR_RemoveExpiredCookies(lpszDomain, lpszPath)
✓ lpszDomain -- 域,为空则表示所有域
✓ lpszPath -- 路径,为空则表示所有路径
 设置 Cookie:
BOOL HP_HttpCookie_MGR_SetCookie(lpszName, lpszValue, lpszDomain, lpszPath,
iMaxAge, bHttpOnly, bSecure, enSameSite, bOnlyUpdateValueIfExists)
✓ lpszName -- 名称
✓ lpszValue -- 值
✓ lpszDomain -- 域
✓ lpszPath -- 路径
✓ iMaxAge -- 生命周期:> 0 –> 存活秒数;= 0 –> 立刻删除,< 0 –> 到应用程序结束
✓ bHttpOnly -- 是否有 HttpOnly 属性
✓ bSecure -- 是否有 secure 属性
✓ enSameSite -- SameSite 属性:0 –> 无;1 –> Strict;2 –> LAX
✓ bOnleUpdateValueIfExists -- 如果 Cookie 已存在是否只更新 Cookie 值
 删除 Cookie:
BOOL HP_HttpCookie_MGR_DeleteCookie(lpszDomain, lpszPath, lpszName)
✓ lpszDomain -- 域
✓ lpszPath -- 路径
✓ lpszName -- 名称
 设置是否允许第三方 Cookie:
void HP_HttpCookie_MGR_SetEnableThirdPartyCookie(bEnableThirdPartyCookie)
✓ bEnableThirdPartyCookie -- TRUE –> 允许;FALSE –> 禁止
 检查是否允许第三方 Cookie:
BOOL HP_HttpCookie_MGR_IsEnableThirdPartyCookie()

 Cookie expires 字符串转换为整数:
BOOL HP_HttpCookie_HLP_ParseExpires(lpszExpires, ptmExpires)
✓ lpszExpires -- expires 字符串
✓ ptmExpires -- expires 整数指针
 整数转换为 Cookie expires 字符串:
BOOL HP_HttpCookie_HLP_MakeExpiresStr(lpszBuff, piBuffLen, tmExpires)
✓ lpszBuff -- 字符串缓冲区
✓ piBuffLen -- 缓冲区长度
✓ tmExpires -- expires 整数
 生成 Cookie 字符串:
BOOL HP_HttpCookie_HLP_ToString(lpszBuff, piBuffLen, lpszName, lpszValue,
lpszDomain, lpszPath, iMaxAge, bHttpOnly, bSecure, enSameSite)
✓ lpszBuff -- 字符串缓冲区
✓ piBuffLen -- 缓冲区长度
✓ lpszName -- 名称
✓ lpszValue -- 值
✓ lpszDomain -- 域
✓ lpszPath -- 路径
✓ iMaxAge -- 生命周期:> 0 –> 存活秒数;= 0 –> 立刻删除,< 0 –> 到应用程序结束
✓ bHttpOnly -- 是否有 HttpOnly 属性
✓ bSecure -- 是否有 secure 属性
✓ enSameSite -- SameSite 属性:0 –> 无;1 –> Strict;2 –> LAX
页: [1]
查看完整版本: Cookie 管理