浏览器Cookie的传输方法及系统与流程

文档序号:12377487阅读:1179来源:国知局
浏览器Cookie的传输方法及系统与流程

本发明涉及浏览器技术领域,尤其是涉及一种浏览器Cookie的传输方法及系统。



背景技术:

Cookie,有时也用其复数形式Cookies,即浏览器缓存,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用Cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否是合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。

目前浏览器大量使用Cookie传输状态,是使用字符串传输,极大的浪费上行服务器带宽资源,影响在低速网络提交请求的速度;另一方面,如果使用压缩的形式传输Cookie,对接收到压缩包进行解压也是一个急需解决的问题。



技术实现要素:

本发明所要解决的技术问题是:提供一种浏览器Cookie的传输方案,减少了服务器由于Cookie传输所占用的带宽,提高在低速网络提交请求的速度。

为了解决上述技术问题,本发明采用的技术方案为:提供一种浏览器Cookie的传输方法,包括:

获取浏览器中的Cookie内容,并进行压缩,转换成Blob对象准备发送;

备份上述Cookie到浏览器Javascript定义的变量中,并清空当前域名的Cookie;

Javascript发起请求,将所述Blob对象置于请求主体中,并发送到代理服务端;

通过Javascript将保存在变量中的Cookie还原到当前域名中。

代理服务端接收到请求后,判断所述请求的请求头中Cookie信息是否为空;

若所述Cookie信息为空,则获取请求主体中的Blob对象;

将所述Blob对象解压为Cookie,并将解压后的Cookie内容还原到所述请求头的对应位置;

代理服务端将还原了所述Cookie内容的请求转发至服务端。

为解决上述问题,本发明还提供一种浏览器Cookie的传输系统,包括:

压缩发送转换模块,用于获取请求中的Cookie内容,并进行压缩,转换成Blob对象准备发送;

备份清空模块,用于备份上述Cookie到浏览器Javascript定义的变量中,并清空当前域名的Cookie;

放置发送模块,用于Javascript发起请求,将所述Blob对象置于请求主体中,并发送到服务端;

还原备份模块,用于通过Javascript将保存在变量中的Cookie还原到当前域名中。

判断模块,用于代理服务端接收到请求后,判断所述请求的请求头中Cookie信息是否为空;

获取模块,用于若所述Cookie信息为空,则获取请求主体中的Blob对象;

解压组装模块,用于将所述Blob对象解压为Cookie,并将解压后的Cookie内容还原到所述请求头的对应位置;

转发模块,用于代理服务端将还原了所述Cookie内容的请求转发至服务端。

本发明的有益效果在于:区别于现有技术,本发明通过将Cookie压缩成Blob格式,并在备份后,清空当前Cookie;在发起请求时,将Blob对象发送到代理服务端,通过引入代理服务端,对接收到的请求解压后,与请求头组装,以还原请求,再将还原后的请求发送至原服务器,进一步避免了原服务器带宽资源的浪费;另外,由于本发明特有的压缩发送方式,代理服务端接收到请求后只需判断请求头中的Cookie信息是否为空即可知道接收到请求是否被压缩过,从而能够快速地选择正确的方式进行转发。通过上述方式,本发明可以在兼容现有浏览器的情况下,将Cookie压缩为二进制格式,减少了服务器由于Cookie传输所占用的带宽,提高在低速网络提交请求的速度。

附图说明

图1为本发明一实施例的浏览器Cookie的传输方法的流程示意图;

图2为本发明一实施例的浏览器Cookie的传输系统的结构示意图;

图3为本发明实施例二的浏览器Cookie的传输系统的结构示意图。

1、压缩转换模块;2、备份清空模块;3、放置发送模块;4、还原备份模块;5、判断模块;6、获取模块;7、解压组装模块;8、转发模块;9、处理模块。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:将Cookie进行压缩后发送至代理服务器,代理服务器对接收到的压缩请求进程解压处理后,将压缩的Cookie内容还原到请求头中,并将还原的请求转发至服务器。

请参照图1,本发明提供一种浏览器Cookie的传输方法,包括:

S1:获取请求中的Cookie内容,并进行压缩,转换成Blob对象准备发送;

S2:备份上述Cookie到浏览器Javascript定义的变量中,并清空当前域名的Cookie;

S3:Javascript发起请求,将所述Blob对象置于请求主体中,并发送到服务端;

S4:通过Javascript将保存在变量中的Cookie还原到当前域名中;

S5:代理服务端接收到请求后,判断所述请求的请求头中Cookie信息是否为空;

S6:若所述Cookie信息为空,则获取请求主体中的Blob对象;

S7:将所述Blob对象解压为Cookie,并将解压后的Cookie内容还原到所述请求头的对应位置;

S8:代理服务端将还原了所述Cookie内容的请求转发至服务端。

应当理解的是,在发起请求前Cookie是在浏览器中,一般是某个文件目录下的文本文件内。按照域名存储,比如www.baidu.com这个域名的cookie就存在www.baidu.com.txt的文件中。

进一步的,所述判断所述请求的请求头中Cookie信息是否为空,之后进一步包括:

若所述Cookie信息不为空,代理服务端将接收到的请求直接转发至服务端。

从上述描述可知,请求头中Cookie信息为空,说明该请求采用了Cookie压缩方式,需要对Cookie压缩内容进行解压;请求头中Cookie信息不为空,则说明该请求没有进行Cookie压缩,直接转发即可。

进一步的,服务端接收到由代理服务端转发的请求后,对所述请求进行处理。

从上述描述可知,本发明最终对请求进行响应的是原服务器,代理服务器的作用是对请求进行解压和转发。

进一步的,所述Blob对象为二进制数据。

Javascript发起请求时,将所述Blob对象置于请求主体中,并将所述请求主体和请求头一并发送到服务端。因此此时发送到服务端是请求头与压缩后的请求主体。

对应地,请参图2,本发明提供一种浏览器Cookie的传输系统,包括:

压缩发送转换模1,用于获取请求中的Cookie内容,并进行压缩,转换成Blob对象准备发送;

备份清空模块2,用于备份上述Cookie到浏览器Javascript定义的变量中,并清空当前域名的Cookie;

放置发送模块3,用于Javascript发起请求,将所述Blob对象置于请求主体中,并发送到服务端;

还原备份模块4,用于通过Javascript将保存在变量中的Cookie还原到当前域名中。

判断模块5,用于代理服务端接收到请求后,判断所述请求的请求头中Cookie信息是否为空;

获取模块6,用于若所述Cookie信息为空,则获取请求主体中的Blob对象;

解压组装模块7,用于将所述Blob对象解压为Cookie,并将解压后的Cookie内容还原到所述请求头的对应位置;

转发模块8,用于代理服务端将还原了所述Cookie内容的请求转发至服务端。

进一步的,若所述Cookie信息不为空,所述转发模块用于代理服务端将接收到的请求直接转发至服务端。

从上述描述可知,请求头中Cookie信息为空,说明该请求采用了Cookie压缩方式,需要获取模块和解压组装模块对Cookie压缩内容进行解压后,转发模块再转发解压组装后的请求;请求头中Cookie信息不为空,则说明该请求没有进行Cookie压缩,转发模块直接转发即可。

进一步的,还包括处理模块9,用于服务端接收到由代理服务端转发的请求后,对所述请求进行处理。

进一步的,所述Blob对象为二进制数据。

Javascript发起请求,将所述Blob对象置于请求主体中,并将所述请求主体和请求头一并发送到服务端。

为方便理解,以下通过一个具体实施例一进行说明。

例如:一个类似Web版QQ的功能的步骤如下:

1.登录操作时,将用户QQ账号信息以加密的方式存入当前域名的cookie中;

2.获取浏览器中的Cookie内容即加密后的QQ账号信息,并进行gzip压缩,转换成Blob对象准备发送;

3:备份上述Cookie即加密后的QQ账号信息到浏览器Javascript定义的变量中,并清空当前域名的Cookie;这样在还原之前用原先发送请求的方式就获取不到QQ账号信息了;

4:Javascript发起请求,将所述Blob对象置于请求主体中,并将防止了该Blob对象的请求主体和请求头一并发送到代理服务端;其中http请求大致格式如下:

POST http://www.qq.com/xxx HTTP/1.1

Content-Length:58

Host:www.qq.com

Cookie:UserInfo=加密后的账号信息

请求主体经过本发明改进后,其格式如下:

POST http://www.qq.com/xxx HTTP/1.1

Content-Length:58

Host:www.qq.com

即:请求主体+Blob对象形式。

5:通过Javascript将保存在变量中的Cookie即加密后的QQ账号信息还原到当前域名中;

如果缺少上述步骤5,会导致存在Cookie中的QQ账号信息丢失,然后,进行其他请求时候,就获取不到QQ账号信息,无法识别是哪个用户了,相当于被退出登录。

6:代理服务端接收到请求后,判断所述请求的请求头中Cookie信息是否为空;

7:若所述Cookie信息为空,则获取接收到的请求中请求主体中的Blob对象;若所述Cookie信息不为空,则直接将接收到的请求转发至服务端;

8:将所述Blob对象解压为Cookie,并将解压后的Cookie内容还原到所述请求头的对应位置;

9:代理服务端将请求主体+Cookie解压内容形式的请求转发至服务端;

10:服务端对接收的请求进行处理。

请参照图3,本发明的实施例二为:

一种浏览器Cookie的传输系统,其特征在于,包括:

压缩转换模块1,用于获取请求中的Cookie内容,并进行gzip压缩,转换成Blob对象;所述Blob对象为二进制数据;

备份清空模块2,用于备份上述Cookie到浏览器Javascript定义的变量中,并清空当前域名的Cookie;

放置发送模块3,用于Javascript发起请求,将所述Blob对象置于请求主体中,并将所述请求主体和请求头一并发送到代理服务端;

还原备份模块4,用于通过Javascript将保存在变量中的Cookie还原到当前域名中。

判断模块5,用于代理服务端接收到请求后,判断所述请求的请求头中Cookie信息是否为空;

获取模块6,用于若所述Cookie信息为空,则获取请求主体中的Blob对象;

解压组装模块7,用于将所述Blob对象解压为Cookie,并将解压后的Cookie内容还原到所述请求头的对应位置;

转发模块8,用于代理服务端将还原了所述Cookie内容的请求转发至服务端;若所述Cookie信息不为空,所述转发模块用于代理服务端将接收到的请求直接转发至服务端。

处理模块9,用于服务端接收到由代理服务端转发的请求后,对所述请求进行处理。

综上所述,本发明的浏览器Cookie传输方法及系统,客户端发送请求时先进行Cookie压缩,减少了服务器由于Cookie传输所占用的带宽,提高在低速网络提交请求的速度;并引入代理服务器,客户端将压缩后的请求发送至代理服务端,再由代理服务器解压还原后转发至原服务器,进一步减少了原服务器带宽资源的占用,能够确保低速网络情况下提交请求的速度。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1