總結使用Cookies的一些問題

2022-11-24 20:46:47 字數 2841 閱讀 8833

最近經常運用到cookie,現在總結一下使用cookies遇到的一些問題。

一、什麼是cookie?

cookie是由伺服器端生成的,總是儲存在客戶端中的一小段文字資訊,在你瀏覽網頁的時候,瀏覽器就會將其儲存在硬碟上,下次訪問同一地址的時候,只要cookie沒有失效,瀏覽器就會將其資訊再次發給伺服器。與之對應的是session,session

執行在伺服器端,

response.cookies["username"].value = "cxx";  //設定cookie

response.cookies["username"].expires = datetime.now.adddays(1);  //設定過期時間,天數

所以,cookie伴隨著使用者請求和頁面在web伺服器和瀏覽器之間進行傳遞。cookie中包含著使用者每次訪問站點的時伺服器端可以讀取到的資訊。

二、cookie解決了什麼問題?

解決了同一瀏覽器訪問不同網頁的時候,資訊不能共享的問題。為什麼呢?因為http協議是無狀態的,對於同一個瀏覽器發出的多個請求,web伺服器是無法區分**的。cookies解決了這個問題。

三、cookies是如何進行互動的?

是通過http的響應頭和請求頭使客戶端和服務端進行互動的。舉個例子:以360賬號登入為例,在登入360中心的時候。會向yunpan.cn這個域名裡面寫cookies的。我們開啟fiddle來看下伺服器是如何寫到yunpan.cn這個域裡面的吧。

從上圖中可以看出,伺服器端的cookie 是通過http響應頭來傳送給客戶端的,每次一個寫入動作,都會產生set-cookie 的響應頭,瀏覽器獲取響應頭後,來接受cookie的

現在我們去訪問yunpan.cn 這個域的時候,我們發現,我們沒有輸入使用者名稱和密碼,直接登陸了。同樣,我們用fillder來看看具體的過程

從上圖中,我們看到cookie的值是在http的請求頭裡面,傳送給伺服器的。

四、cookies的引數及其含義

引數

含義

取值

備註

name=[名稱=《值》]

name表示cookie的key

value 表示key的取值

儲存value的值時候必須轉義,一般用encodeuricompoment 進行轉義,對key的合法性也必須進行檢查

[; expires=]

cookie的過期日期,

以ms為單位,gmt為標準

預設為空,該cookie只能被瀏覽器的

[; domain=]

生效的域名

域名  

可以預設,即為當前網頁的域名

[; path=]

生效的路徑

/path

可以預設,即為當前網頁所在的目錄,cookie不能跨path訪問,但是可以訪問到父級目錄設定的cookie

[; secure]

安全性true/false

可以預設,表示cookie只能在https連結中被瀏覽器傳遞到伺服器端進行會話驗證,http是不會傳遞該資訊的

五、cookie 在不同瀏覽器中的差異

瀏覽器的類別

單域名cookie的數量上限

單個cookie的容量上限

cookie的總上限

說明

ie650

4095

4095

當cookie的數量超過的時候,會踢出之前的生成的cookie,儲存最新的cookie的值的

ie750

4095

4095

同上ie8

504095

4095

同上ie9

504095

4095

同上firefox12

1504097

4097

同上chrome17

160~170

4097

4097

同上safari

沒有限制

4097

4097

六、利用cookie可以做什麼?

(1)儲存使用者的登陸狀態,例如上例中的,使用者進行登陸,成功登陸後,伺服器生成特定的cookie返回給客戶端,客戶端下次訪問該域名下的任何頁面,將該cookie的資訊傳送給伺服器,伺服器經過檢驗,

來判斷使用者是否登陸。

(2)記錄使用者的行為,例如,京東商場左下角有一個最近訪問的產品記錄資訊,噹噹網上有你最近瀏覽過的書籍資訊,都是根據使用者訪問頁面,記錄到cookie的資訊來製作的。

(3)電商購物車的處理,因為在不同頁面,點選新增到購物車,這個資訊也是記到了cookie裡面。結賬的時候統一提交

(4)定製頁面。如果**提供了換膚的功能,我們這個時候也是將他記錄到cookie裡面,以便下次訪問還是保持原來的風格頁面。

七、cookie的安全性

cookie是不安全的,因為他可以被使用者篡改。同時由於cookie儲存大量的資訊,一旦這些資訊洩露出來,也是危害很大的,所以,我們要慎用cookie

附錄:測試**

123123123

cookies和session得一些理解

cookies如果沒設定過期時間 他會在新建ie的時候失效 但是在你新建視窗的地方不會失效!其實 也是這麼做的。session每開啟一個頁面他的sessionid都會不一樣 利用這個原理可以做防止頁面重複提交的功能!因為form提交後頁面重新整理的sessionid是一樣的 如果儲存cookies時...

Vim的一些使用

vim的工作方式不同於常規的編輯器,在常規編輯器下對應到vim中就是一直使用insert模式進行操作,但是vim並不是這樣設計的,在vim下的操作流程為 開啟vim 預設為normal模式 快速移動到自己需要的位置 進入insert模式修改少部分文字 按esc 回到normal模式尋找下一個需要編輯...

String一些方法的使用

string.format 就是將前面的表示式,用後面的字串替代,常用方法如下 單個佔位符 string s1 string.format hellow s 歡迎您!tom system.out.print s1 hellow tom 歡迎您!多個佔位符 1.按照順序匹配 string s2 str...