




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用有穷自动机解析Cookie以前我们开发一个代理转换服务器,它位于移动设备(或者移动设备网关,如WAP网关)与WEB服务器之间,移动设备通过我们的代理转换服务器去访问WEB服务器,代理转换服务器会把取到的网页(HTML)转换成移动设备支持的网页(如XHTML/CHTML/HDML/WML等),然后发给设备。这样,移动设备就可以访问现有的WEB服务了。后来,客户要求加一个功能:大多数网站都要求浏览器支持Cookie,但很多移动设备的浏览器没有这个功能,因为这个原因,设备访问不了这些网站。客户要求代理转换服务器能够解决这个问题。在代理转换服务器解中解决这个问题并不困难,可以这样实现:当设备通过代理转换服务器访问WEB服务器时,如果在WEB服务器的响应中带有Set-Cookie,则代理转换服务器把它存起来,在这个设备后续访问时,代理转换服务器会从数据库中把Cookie取出来,加到请求里,并发送给WEB服务器,这就模拟了设备支持Cookie的功能。实现时,我们需要把Cookie解析出来,并加上SessionID,查找时要根据SessionID和Domain等条件进行匹配,满足条件才加入到请求头中。同时要定期检查Cookie是否过期,若过期了,则从数据库中删除。这里涉及到Cookie的解析和重组,当然这非常简单,我们用一个小程序演示如何用DFA解析Cookie。Cookie的格式为:“NAME=VALUE; expires=DATE;path=PATH; domain=DOMAIN_NAME; Secure”一个Cookie可以看作一个一个的KEY, VALUE对,KEY和Value之间用=分隔, KEY, VALUE 对之间用;分隔,有的Value是可选的,如Secure。DFA的描述如下:字母表:ASCII码状态:KEY前、KEY中,VALUE前,VALUE中和接受状态。KEY前状态同时是起始状态。转换规则:KEY前状态下读到非空格,进入在KEY中。KEY中状态下读到=,进入VALUE前状态。KEY中状态下读到;,进入KEY前状态。VALUE前状态下读到非空格,进入VALUE中状态。VALUE中状态下读到;,进入KEY前。KEY前状态、KEY中状态, VALUE前和VALUE中状态下读到/0,进入结束状态。每当读到一个完整的KEY, VALUE,就调用一个回调函数去构建Cookie。实现代码如下:/Build: gcc -DDEBUG -g parsecookie.c -o pc.exe#include#include#include#includetypedefint(COOKIE_BUILDER)(void* pBuildCtx,constchar* key,constchar* value);/Set-Cookie: name=value; Expires=date; domain=domainname;path=path; secure;intParseCookie(constchar* pszCookie,void* pBuildCtx, COOKIE_BUILDER Builder)enumSTAT_BEFORE_KEY,STAT_IN_KEY,STAT_BEFORE_VALUE,STAT_IN_VALUEeState = STAT_BEFORE_KEY;char* key = NULL;char* value = NULL;char* pszWorkBuff = NULL;char* p = NULL;assert(pszCookie != NULL & Builder != NULL);pszWorkBuff = (char*)strdup(pszCookie);p = pszWorkBuff;while(*p !=/0)switch(eState)caseSTAT_BEFORE_KEY:if(*p != )eState = STAT_IN_KEY;key = p;break;caseSTAT_IN_KEY:if(*p =)*p =/0;eState = STAT_BEFORE_VALUE;elseif(*p =;)*p =/0;eState = STAT_BEFORE_KEY;Builder(pBuildCtx, key, NULL);key = NULL;value = NULL;break;caseSTAT_BEFORE_VALUE:if(*p != )eState = STAT_IN_VALUE;value = p;break;caseSTAT_IN_VALUE:if(*p =;)*p =/0;eState = STAT_BEFORE_KEY;Builder(pBuildCtx, key, value);key = NULL;value = NULL;break;default:break;p+; free(pszWorkBuff );return0;intDumpCookieBuilder(void* pBuildCtx,constchar* key,constchar* value)printf(%s=%s/n, key, value);return0;intmain(intargc,char* argv)intnRet = 0;if(argc = 2)nRet = ParseCookie(argv1, NULL, DumpCookieBuilder);elseprintf(Usage: %s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 3.2 有限的耕地资源教学设计-2025-2026学年初中地理晋教版八年级上册-晋教版2012
- 装饰艺术设计专业毕业实习报告范文
- 薪酬内部核算管理办法
- 电工断路器新手知识培训课件
- 设备管理中心管理办法
- 财务电子证书管理办法
- 数学课程标准助力跨学科教学的心得体会
- 购物中心公寓管理办法
- 做推销的合同协议书模板
- 公寓房首付购房合同范本
- 抑郁症治疗个案分析文献综述
- 面试必杀技:保研面试实战模拟题库解析
- 2025年金融机具行业研究报告及未来发展趋势预测
- 2025秋新版一年级上册语文教学计划+教学进度表
- 2025年安徽干部教育在线必修课考试试题及答案
- 2025年度中级经济师职称评审聘用合同样本
- 新业务开发管理办法
- 民事起诉状要素式(买卖合同纠纷)
- 超声新技术新项目应用与发展
- 车间安全教育培训记录表
- 2025年全国新高考语文一卷评讲课件(共66张)
评论
0/150
提交评论