cookie
由于http是無狀態(tài)的協(xié)議,一旦客戶端和服務(wù)器的數(shù)據(jù)交換完畢,就會斷開連接,再次請求,會重新連接,服務(wù)器單從網(wǎng)絡(luò)連接上是沒有辦法知道用戶身份的。cookie就是為了解決此問題而產(chǎn)生的,每次新的用戶請求時,便給用戶頒發(fā)一個獨(dú)一無二的身份證,下次訪問,必須帶上身份證,這樣服務(wù)器就會知道是哪個用戶進(jìn)行了訪問,針對不同用戶,做出不同的響應(yīng)cookie是一個很小的純文本文件(最多為4K),是瀏覽器儲存在用戶的機(jī)器上的。儲存一些服務(wù)器需要的信息,每次請求站點(diǎn),會發(fā)送相應(yīng)的cookie,這些cookie可以用來辨別用戶身份信息等作用。
cookie的屬性字段
| props | intro |
|---|---|
| name | cookie的名稱 |
| value | cookie的值 |
| domain | 可以訪問cookie的域名 |
| path | 可以訪問此cookie的頁面路徑 |
| expires/Max-Age | cookie有效的時間 |
| Size | cookie的大小 |
| httpOnly | js能否讀取到cookie信息 |
| secure | 是否只能通過https來傳遞此條cookie |
cookie是以純文本的方式存儲,即cookie的數(shù)據(jù)類型為String類型
document.cookie = 'name=userInfo'; // 設(shè)置cookie的name屬性document.cookie = 'username=Jack'; // 在cookie中存儲了username信息console.log(document.cookie); // name=userInfo; username=Jack
document.cookie = 'name=userInfo'; // 設(shè)置cookie的name屬性document.cookie = 'username=Amy'; // 在cookie中存儲了username信息console.log(document.cookie); // name=userInfo; username=Amy
通過上面的實(shí)例可以知道,給cookie賦值時是不會覆蓋cookie的原有的值,當(dāng)?shù)忍柷暗膶傩悦嗤瑫r,才會將原來相同屬性名的值覆蓋為后來設(shè)置的值。注意,cookie的兩個字段之間是通過一個分號和空格分隔,而不是只有一個分號
當(dāng)要給cookie設(shè)置非自定義的屬性字段時,需要通過字符串追加的方式
例如
let expireDate = new Date();document.cookie += ";expires=" + expireDate.toString();
注意: ";expires="中的分號必須有,如果字段前不加分號則會認(rèn)為這是一個自定義字段
domain
非頂級域名,如二級域名或者三級域名,設(shè)置的cookie的domain只能為頂級域名或者二級域名或者三級域名本身,不能設(shè)置其他二級域名的cookie,否則cookie無法生成。
頂級域名只能設(shè)置domain為頂級域名,不能設(shè)置為二級域名或者三級域名,否則cookie無法生成。
新聞熱點(diǎn)
疑難解答
圖片精選