curl中对应cookie的管理
来源:互联网 发布:图片归类整理软件 编辑:程序博客网 时间:2024/06/16 12:42
curl中,对于cookie的管理,取决于是否有 CURL_DISABLE_COOKIES宏,如果没有定义,那么就是需要处理cookie的。
curl内部使用Cookie和CookieInfo两个struct保存cookie信息。 为一个easy handle设置CURLOPT_SHARE选项,并且指定的share handle启用了cookie共享功能, 则easy handle会使用share handle中的共享cookie列表。
下面就说一下共享cookie以及出现的问题:
问题:
在首次和服务器交互的时候,是没有cookie的信息的,当服务器返回应答中,携带了Set-Cookie:,那么此时cookie被保存到共享cookie中,那么在程序结束之前,只要服务器没有重新携带 Set-Cookie: ,那么客户端会在每次会话中都携带。那么,想在新会话建立的时候,不使用上一次的cookie,怎么办么?
cookie的保存过程:
1、查看共享cookie是怎么创建的。
在 curl_context_init() 中,初始化了一些全局句柄,包括 global_context->shareHandle 共享句柄,global_context->shareHandle = curl_share_init(),这个句柄是程序结束之前,一直存在不销毁的。
2、设置共享cookie信息。
在curl_share_setopt()中,通过 CURL_LOCK_DATA_COOKIE这个宏,调用 Curl_cookie_init() 去初始化cookie,同时返回值作为 share->cookies 保存。
3、当客户端和服务器结束当前对话,那么 Curl_cookie_cleanup() 情况当前保存的cookie变量,下一次重新建立会话的时候,从 curl_session_create() 开始,判断全局共享cookie是否存在,如果存在,那么当前cookie就等于全局保存的共享cookie。也就是此次新建立的会话,用的是上一次保存的cookie。
解决办法:
因为每次会话,都是从curl_session_create() 开始的,同时共享cookie在程序结束之前,并没有清空,因此,应该在会话开始的时候,清空全局共享cookie,重新初始化。
具体解决过程: curl_session_create()中,调用 curl_share_setopt(),对 global_context->shareHandle 句柄,设置 CURL_LOCK_DATA_COOKIE 的 CURLSHOPT_SHARE 属性,然后此时检查,如果 share->cookies 不为空,那么清空,Curl_cookie_cleanup(share->cookies),然后重新 share->cookies = Curl_cookie_init(NULL, NULL, NULL, TRUE ) 初始化,这样每次新建立的会话,cookie都是从空开始,保证不受上一次cookie的干扰。
- curl中对应cookie的管理
- PHP CURL中传递cookie的方法
- 在Javascript中管理你的Cookie
- CURL COOKIE
- curl错误码对应的中英文解释
- Wininet中Cookie管理
- PHP CURL库的cookie设置
- 使用CURL来获取COOKIE的方法
- php的curl怎么设置header中参数,cookie中的参数?
- Cookie对应多个值的用法、访问次数
- Session与Cookie的对应关系
- php多文件上传 对应的curl语法
- curl如何处理cookie
- curl获得cookie数据
- CURL模拟cookie登录
- curl用cookie抓取
- curl获得cookie数据
- curl share cookie DNS
- 分享:CSS3用transition实现边框动画效果
- linux下交叉编译libusb的方法及编译一个使用了libusb库的test程序的方法
- Exchange 用户发送邮件提示:您无权执行此操作,解决办法
- 使用POI读取excel文件内容
- FastDFS及Nginx的部署
- curl中对应cookie的管理
- javascript 浏览器永久保存数据:localStorage
- log4j:WARN custom level class not found问题解决方法
- 欢迎使用CSDN-markdown编辑器
- js杂记
- 图像升采样的实现详解
- LeetCode 485 最大连续1的个数
- java RC4加密解密
- java类加载机制详解