壓縮發送瀏覽器Cookie的方法及系統與流程
2023-05-30 09:41:26 3
本發明涉及瀏覽器技術領域,尤其是涉及一種壓縮發送瀏覽器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內容,並進行gzip壓縮,轉換成Blob對象準備發送;
備份上述Cookie到瀏覽器Javascript定義的變量中,並清空當前域名的Cookie;
Javascript發起請求,將所述Blob對象置於請求主體中,並發送到服務端;
通過Javascript將保存在變量中的Cookie還原到當前域名中。
服務端接收到所述請求,將請求主體中Blob對象解壓為Cookie,與請求頭組裝,以還原請求。
為解決上述問題,本發明還提供一種壓縮發送瀏覽器Cookie的系統,包括:
壓縮發送轉換模塊,用於獲取請求中的Cookie內容,並進行gzip壓縮,轉換成Blob對象準備發送;
備份清空模塊,用於備份上述Cookie到瀏覽器Javascript定義的變量中,並清空當前域名的Cookie;
放置發送模塊,用於Javascript發起請求,將所述Blob對象置於請求主體中,並發送到服務端;
還原備份模塊,用於通過Javascript將保存在變量中的Cookie還原到當前域名中。
解壓組裝模塊,用於服務端接收到所述請求,將請求主體中Blob對象解壓為Cookie,與請求頭組裝,以還原請求。
本發明的有益效果在於:區別於現有技術,本發明通過將cookie壓縮成blob格式,並在備份後,清空當前cookie,在發起請求時,將blob對象發送到服務端,在解壓後,與請求頭組裝,以還原請求。通過上述方式,本發明可以在兼容現有瀏覽器的情況下,將Cookie壓縮為二進位格式,減少了伺服器由於Cookie傳輸所佔用的帶寬,提高在低速網絡提交請求的速度。
附圖說明
圖1為本發明方法實施例一的流程示意圖。
具體實施方式
為詳細說明本發明的技術內容、所實現目的及效果,以下結合實施方式並配合附圖予以說明。
本發明最關鍵的構思在於:將Cookie壓縮成二進位,以放在請求主體中,在解析時,通過解壓到請求頭中,還原請求。
請參照圖1,本發明實施例一提供一種壓縮發送瀏覽器Cookie的方法,包括:
S1:獲取請求中的Cookie內容,並進行gzip壓縮,轉換成Blob對象準備發送;
S2:備份上述Cookie到瀏覽器Javascript定義的變量中,並清空當前域名的Cookie;
S3:Javascript發起請求,將所述Blob對象置於請求主體中,並發送到服務端;
S4:通過Javascript將保存在變量中的Cookie還原到當前域名中;
S5:服務端接收到所述請求,將請求主體中Blob對象解壓為Cookie,與請求頭組裝,以還原請求。
應當理解的是,在發起請求前Cookie是在瀏覽器中,一般是某個文件目錄下的文本文件內。按照域名存儲,比如www.baidu.com這個域名的cookie就存在www.baidu.com.txt的文件中。
區別於現有技術,本發明通過將cookie壓縮成blob格式,並在備份後,勤工當前cookie,在發起請求時,將blob對象發送到服務端,在解壓後,與請求頭組裝,以還原請求。通過上述方式,本發明可以在兼容現有瀏覽器的情況下,將Cookie壓縮為二進位格式,減少了伺服器由於Cookie傳輸所佔用的帶寬,提高在低速網絡提交請求的速度。
其中,所述Blob對象為二進位數據。
Javascript發起請求時,將所述Blob對象置於請求主體中,並和請求頭一併發送到服務端。因此此時發送到服務端是請求頭與壓縮後的請求主體。
對應地,本發明實施例二提供一種壓縮發送瀏覽器Cookie的系統,包括:
壓縮發送轉換模塊,用於獲取請求中的Cookie內容,並進行gzip壓縮,轉換成Blob對象準備發送;
備份清空模塊,用於備份上述Cookie到瀏覽器Javascript定義的變量中,並清空當前域名的Cookie;
放置發送模塊,用於Javascript發起請求,將所述Blob對象置於請求主體中,並發送到服務端;
還原備份模塊,用於通過Javascript將保存在變量中的Cookie還原到當前域名中。
解壓組裝模塊,用於服務端接收到所述請求,將請求主體中Blob對象解壓為Cookie,與請求頭組裝,以還原請求。
其中,所述Blob對象為二進位數據。
Javascript發起請求,將所述Blob對象置於請求主體中,並和請求頭一併發送到服務端。
為方便理解,以下通過一個具體實施例進行說明。
例如:一個類似Web版QQ的功能的步驟如下:
1.登錄操作時,將用戶QQ帳號信息以加密的方式存入當前域名的cookie中;
2.獲取瀏覽器中的Cookie內容即加密後的QQ帳號信息,並進行gzip壓縮,轉換成Blob對象準備發送;
3:備份上述Cookie即加密後的QQ帳號信息到瀏覽器Javascript定義的變量中,並清空當前域名的Cookie;這樣在還原之前用原先發送請求的方式就獲取不到QQ帳號信息了;
4:Javascript發起請求,將所述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:服務端接收到所述請求,將請求主體中Blob對象解壓為Cookie,與請求頭組裝,以還原請求。
以上所述僅為本發明的實施例,並非因此限制本發明的專利範圍,凡是利用本發明說明書及附圖內容所作的等同變換,或直接或間接運用在相關的技術領域,均同理包括在本發明的專利保護範圍內。