本發(fā)明涉及瀏覽器技術(shù)領(lǐng)域,尤其是涉及一種壓縮發(fā)送瀏覽器Cookie的方法及系統(tǒng)。
背景技術(shù):
Cookie,有時(shí)也用其復(fù)數(shù)形式Cookies,即瀏覽器緩存,指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。Cookie是由服務(wù)器端生成,發(fā)送給User-Agent(一般是瀏覽器),瀏覽器會(huì)將Cookie的key/value保存到某個(gè)目錄下的文本文件內(nèi),下次請(qǐng)求同一網(wǎng)站時(shí)就發(fā)送該Cookie給服務(wù)器(前提是瀏覽器設(shè)置為啟用Cookie)。Cookie名稱和值可以由服務(wù)器端開(kāi)發(fā)自己定義,對(duì)于JSP而言也可以直接寫(xiě)入jsessionid,這樣服務(wù)器可以知道該用戶是否是合法用戶以及是否需要重新登錄等,服務(wù)器可以設(shè)置或讀取Cookies中包含信息,借此維護(hù)用戶跟服務(wù)器會(huì)話中的狀態(tài)。
服務(wù)器可以利用Cookies包含信息的任意性來(lái)篩選并經(jīng)常性維護(hù)這些信息,以判斷在HTTP傳輸中的狀態(tài)。Cookies最典型的應(yīng)用是判定注冊(cè)用戶是否已經(jīng)登錄網(wǎng)站,用戶可能會(huì)得到提示,是否在下一次進(jìn)入此網(wǎng)站時(shí)保留用戶信息以便簡(jiǎn)化登錄手續(xù),這些都是Cookies的功用。另一個(gè)重要應(yīng)用場(chǎng)合是“購(gòu)物車(chē)”之類處理。用戶可能會(huì)在一段時(shí)間內(nèi)在同一家網(wǎng)站的不同頁(yè)面中選擇不同的商品,這些信息都會(huì)寫(xiě)入Cookies,以便在最后付款時(shí)提取信息。
目前瀏覽器大量使用Cookie傳輸狀態(tài),是使用字符串傳輸,極大的浪費(fèi)上行服務(wù)器帶寬資源,影響在低速網(wǎng)絡(luò)提交請(qǐng)求的速度。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是:提供一種壓縮發(fā)送Cookie的方案,減少了服務(wù)器由于Cookie傳輸所占用的帶寬,提高在低速網(wǎng)絡(luò)提交請(qǐng)求的速度。
為了解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案為:提供一種壓縮發(fā)送瀏覽器Cookie的方法,包括:
獲取瀏覽器中的Cookie內(nèi)容,并進(jìn)行g(shù)zip壓縮,轉(zhuǎn)換成Blob對(duì)象準(zhǔn)備發(fā)送;
備份上述Cookie到瀏覽器Javascript定義的變量中,并清空當(dāng)前域名的Cookie;
Javascript發(fā)起請(qǐng)求,將所述Blob對(duì)象置于請(qǐng)求主體中,并發(fā)送到服務(wù)端;
通過(guò)Javascript將保存在變量中的Cookie還原到當(dāng)前域名中。
服務(wù)端接收到所述請(qǐng)求,將請(qǐng)求主體中Blob對(duì)象解壓為Cookie,與請(qǐng)求頭組裝,以還原請(qǐng)求。
為解決上述問(wèn)題,本發(fā)明還提供一種壓縮發(fā)送瀏覽器Cookie的系統(tǒng),包括:
壓縮發(fā)送轉(zhuǎn)換模塊,用于獲取請(qǐng)求中的Cookie內(nèi)容,并進(jìn)行g(shù)zip壓縮,轉(zhuǎn)換成Blob對(duì)象準(zhǔn)備發(fā)送;
備份清空模塊,用于備份上述Cookie到瀏覽器Javascript定義的變量中,并清空當(dāng)前域名的Cookie;
放置發(fā)送模塊,用于Javascript發(fā)起請(qǐng)求,將所述Blob對(duì)象置于請(qǐng)求主體中,并發(fā)送到服務(wù)端;
還原備份模塊,用于通過(guò)Javascript將保存在變量中的Cookie還原到當(dāng)前域名中。
解壓組裝模塊,用于服務(wù)端接收到所述請(qǐng)求,將請(qǐng)求主體中Blob對(duì)象解壓為Cookie,與請(qǐng)求頭組裝,以還原請(qǐng)求。
本發(fā)明的有益效果在于:區(qū)別于現(xiàn)有技術(shù),本發(fā)明通過(guò)將cookie壓縮成blob格式,并在備份后,清空當(dāng)前cookie,在發(fā)起請(qǐng)求時(shí),將blob對(duì)象發(fā)送到服務(wù)端,在解壓后,與請(qǐng)求頭組裝,以還原請(qǐng)求。通過(guò)上述方式,本發(fā)明可以在兼容現(xiàn)有瀏覽器的情況下,將Cookie壓縮為二進(jìn)制格式,減少了服務(wù)器由于Cookie傳輸所占用的帶寬,提高在低速網(wǎng)絡(luò)提交請(qǐng)求的速度。
附圖說(shuō)明
圖1為本發(fā)明方法實(shí)施例一的流程示意圖。
具體實(shí)施方式
為詳細(xì)說(shuō)明本發(fā)明的技術(shù)內(nèi)容、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖予以說(shuō)明。
本發(fā)明最關(guān)鍵的構(gòu)思在于:將Cookie壓縮成二進(jìn)制,以放在請(qǐng)求主體中,在解析時(shí),通過(guò)解壓到請(qǐng)求頭中,還原請(qǐng)求。
請(qǐng)參照?qǐng)D1,本發(fā)明實(shí)施例一提供一種壓縮發(fā)送瀏覽器Cookie的方法,包括:
S1:獲取請(qǐng)求中的Cookie內(nèi)容,并進(jìn)行g(shù)zip壓縮,轉(zhuǎn)換成Blob對(duì)象準(zhǔn)備發(fā)送;
S2:備份上述Cookie到瀏覽器Javascript定義的變量中,并清空當(dāng)前域名的Cookie;
S3:Javascript發(fā)起請(qǐng)求,將所述Blob對(duì)象置于請(qǐng)求主體中,并發(fā)送到服務(wù)端;
S4:通過(guò)Javascript將保存在變量中的Cookie還原到當(dāng)前域名中;
S5:服務(wù)端接收到所述請(qǐng)求,將請(qǐng)求主體中Blob對(duì)象解壓為Cookie,與請(qǐng)求頭組裝,以還原請(qǐng)求。
應(yīng)當(dāng)理解的是,在發(fā)起請(qǐng)求前Cookie是在瀏覽器中,一般是某個(gè)文件目錄下的文本文件內(nèi)。按照域名存儲(chǔ),比如www.baidu.com這個(gè)域名的cookie就存在www.baidu.com.txt的文件中。
區(qū)別于現(xiàn)有技術(shù),本發(fā)明通過(guò)將cookie壓縮成blob格式,并在備份后,勤工當(dāng)前cookie,在發(fā)起請(qǐng)求時(shí),將blob對(duì)象發(fā)送到服務(wù)端,在解壓后,與請(qǐng)求頭組裝,以還原請(qǐng)求。通過(guò)上述方式,本發(fā)明可以在兼容現(xiàn)有瀏覽器的情況下,將Cookie壓縮為二進(jìn)制格式,減少了服務(wù)器由于Cookie傳輸所占用的帶寬,提高在低速網(wǎng)絡(luò)提交請(qǐng)求的速度。
其中,所述Blob對(duì)象為二進(jìn)制數(shù)據(jù)。
Javascript發(fā)起請(qǐng)求時(shí),將所述Blob對(duì)象置于請(qǐng)求主體中,并和請(qǐng)求頭一并發(fā)送到服務(wù)端。因此此時(shí)發(fā)送到服務(wù)端是請(qǐng)求頭與壓縮后的請(qǐng)求主體。
對(duì)應(yīng)地,本發(fā)明實(shí)施例二提供一種壓縮發(fā)送瀏覽器Cookie的系統(tǒng),包括:
壓縮發(fā)送轉(zhuǎn)換模塊,用于獲取請(qǐng)求中的Cookie內(nèi)容,并進(jìn)行g(shù)zip壓縮,轉(zhuǎn)換成Blob對(duì)象準(zhǔn)備發(fā)送;
備份清空模塊,用于備份上述Cookie到瀏覽器Javascript定義的變量中,并清空當(dāng)前域名的Cookie;
放置發(fā)送模塊,用于Javascript發(fā)起請(qǐng)求,將所述Blob對(duì)象置于請(qǐng)求主體中,并發(fā)送到服務(wù)端;
還原備份模塊,用于通過(guò)Javascript將保存在變量中的Cookie還原到當(dāng)前域名中。
解壓組裝模塊,用于服務(wù)端接收到所述請(qǐng)求,將請(qǐng)求主體中Blob對(duì)象解壓為Cookie,與請(qǐng)求頭組裝,以還原請(qǐng)求。
其中,所述Blob對(duì)象為二進(jìn)制數(shù)據(jù)。
Javascript發(fā)起請(qǐng)求,將所述Blob對(duì)象置于請(qǐng)求主體中,并和請(qǐng)求頭一并發(fā)送到服務(wù)端。
為方便理解,以下通過(guò)一個(gè)具體實(shí)施例進(jìn)行說(shuō)明。
例如:一個(gè)類似Web版QQ的功能的步驟如下:
1.登錄操作時(shí),將用戶QQ賬號(hào)信息以加密的方式存入當(dāng)前域名的cookie中;
2.獲取瀏覽器中的Cookie內(nèi)容即加密后的QQ賬號(hào)信息,并進(jìn)行g(shù)zip壓縮,轉(zhuǎn)換成Blob對(duì)象準(zhǔn)備發(fā)送;
3:備份上述Cookie即加密后的QQ賬號(hào)信息到瀏覽器Javascript定義的變量中,并清空當(dāng)前域名的Cookie;這樣在還原之前用原先發(fā)送請(qǐng)求的方式就獲取不到QQ賬號(hào)信息了;
4:Javascript發(fā)起請(qǐng)求,將所述Blob對(duì)象置于請(qǐng)求主體中,并發(fā)送到服務(wù)端;其中http請(qǐng)求大致格式如下:
POST http://www.qq.com/xxx HTTP/1.1
Content-Length:58
Host:www.qq.com
Cookie:UserInfo=加密后的賬號(hào)信息
請(qǐng)求主體經(jīng)過(guò)本發(fā)明改進(jìn)后,其格式如下:
POST http://www.qq.com/xxx HTTP/1.1
Content-Length:58
Host:www.qq.com
即:請(qǐng)求主體+Blob對(duì)象形式。
5:通過(guò)Javascript將保存在變量中的Cookie即加密后的QQ賬號(hào)信息還原到當(dāng)前域名中;
如果缺少上述步驟5,會(huì)導(dǎo)致存在Cookie中的QQ賬號(hào)信息丟失,然后,進(jìn)行其他請(qǐng)求時(shí)候,就獲取不到QQ賬號(hào)信息,無(wú)法識(shí)別是哪個(gè)用戶了,相當(dāng)于被退出登錄。
6:服務(wù)端接收到所述請(qǐng)求,將請(qǐng)求主體中Blob對(duì)象解壓為Cookie,與請(qǐng)求頭組裝,以還原請(qǐng)求。
以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等同變換,或直接或間接運(yùn)用在相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。