cookie服務端基本設置
const http = require('http');
http.createServer((req, res) => {
// 獲取客戶端的
const Cookies = {};
req.headers.cookie && req.headers.cookie.split(';').forEach(cookie => {
const part = cookie.split('=');
Cookies[part[0].trim()] = (part[1] || '').trim();
});
console.log(Cookies);
// 設置客戶端的
res.writeHead(200, {
'Set-Cookie': 'SSID=Ap4GTEq; Expires=Wed, 13-Jan-2021 22:23:01 GMT;HttpOnly',
'Content-Type': 'text/html'
});
res.end('Hello World\n<script>console.log(document.Cookie)</script>').listen(8000);
});
-
HttpOnly屬性: 微軟對Cookie的擴展,如果設置,則通過js腳本等將無法讀取到Cookie信息,防止XSS -
Secure屬性: 當設置為true時,只能以HTTPS傳遞,如果是HTTP則不會傳遞該信息。所以在客戶端,無法在document.Cookie找到被設置Secure = true的Cookie鍵值對。Secure = true比HttpOnly對訪問控制更嚴格 -
path屬性: 指定可訪問Cookie的目錄 -
domain屬性: 指定可訪問Cookie的主機名,同一個域下的不同主機
語法:'name=value;domain=CookieDomain';
eg: 'name=value;domain=.google.com' 這樣www.google.com和gmail.google.com都可以獲取到該Cookie
-
Expires屬性: 指定過期時間
語法: 'name=value; expires=GMT_String'
GMT_String是以GMT格式表示的時間字符串,超過這個時間,Cookie就消失
-
Max-Age屬性: 指定此Cookie從創(chuàng)建到過期所能存在的時間,單位是秒,可以為負值- 當為負值時,該Cookie只儲存在瀏覽器內(nèi)存,只要關閉瀏覽器,此Cookie就會消失
- 當為正值時,就表示所能存在時間
- 當為0時,從客戶端電腦或瀏覽器內(nèi)存中刪除此Cookie
- 默認初始值為 -1