一,Cookie簡介
二,Cookie 特點
三,Cookie的使用
四,加密Cookie
五,Cookie的應用
一,Cookie簡介
cookie 是存儲於訪問者的計算機中的變量。可以讓我們用同一個瀏覽器訪問同一個域
名的時候共享數據
HTTP 是無狀態協議。簡單地說,當你瀏覽了一個頁面,然后轉到同一個網站的另一個頁
面,服務器無法認識到這是同一個瀏覽器在訪問同一個網站。每一次的訪問,都是沒有任何
關系的。
Cookie 是一個簡單到爆的想法:當訪問一個頁面的時候,服務器在下行 HTTP 報文中,
命令瀏覽器存儲一個字符串; 瀏覽器再訪問同一個域的時候,將把這個字符串攜帶到上行
HTTP 請求中。第一次訪問一個服務器,不可能攜帶 cookie。 必須是服務器得到這次請求,
在下行響應報頭中,攜帶 cookie 信息,此后每一次瀏覽器往這個服務器發出的請求,都會
攜帶這個 cookie。
二、Cookie 特點
● cookie 保存在瀏覽器本地
● 正常設置的 cookie 是不加密的,用戶可以自由看到;
● 用戶可以刪除 cookie,或者禁用它
● cookie 可以被篡改
● cookie 可以用於攻擊
● cookie 存儲量很小。未來實際上要被 localStorage 替代,但是后者 IE9 兼容
三、Cookie 的使用
1,安裝 cnpm install cookie-parser --save
2,引入 var CookIePar = require(''cookie-parser);
3,設置中間件
app.use(cookieParser());
4,設置 cookie
res。cooKies(‘name’,zhangsan,{max:9000000,httpOnly:true});
//httpOnly 默認false不允許 客戶端腳本訪問
5,獲取cookie
req.cookies.name
屬性說明
domain: 域名
name=value:鍵值對,可以設置要保存的 Key/Value,注意這里的 name 不能和其他屬性項的名字
一樣
Expires: 過期時間(秒),在設置的某個時間點后該 Cookie 就會失效,如 expires=Wednesday,
09-Nov-99 23:12:40 GMT
maxAge: 最大失效時間(毫秒),設置在多少后失效
secure: 當 secure 值為 true 時,cookie 在 HTTP 中是無效,在 HTTPS 中才有效
Path: 表示 cookie 影響到的路,如 path=/。如果路徑不能匹配時,瀏覽器則不發送這個 Cookie
httpOnly:是微軟對 COOKIE 做的擴展。如果在 COOKIE 中設置了“httpOnly”屬性,則通過程序(JS
腳本、applet 等)將無法讀取到COOKIE 信息,防止 XSS 攻擊產生
singed:表示是否簽名cookie, 設為true 會對這個 cookie 簽名,這樣就需要用
res.signedCookies 而不是 res.cookies 訪問它。被篡改的簽名 cookie 會被服務器拒絕,並且 cookie
值會重置為它的原始值
設置cookie
res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })
res.cookie('name', 'tobi', { domain: '.example.com', path: '/admin', secure: true });
res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly:
true });
獲取 cookie
res.cookies.name
刪除cookie
res.cookie('rememberme', '', { expires: new Date(0)});
res.cookie('username','zhangsan',{domain:'.ccc.com',maxAge:0,httpOnly:true}
四,加密Cookie
1,配置中間件的時候需要傳參
var cookieParser = require('cookie-parser');
app.use(cookieParser('123456'));
2,設置cookie的時候配置signed屬性
res.cookie(‘userinfo’,‘參數’,{ domain:'.ccc.com',maxAge:900000,httpOnly:true,signed:true });
3,sigendCookies調用設置的cookie
console.log(req。sigedCookies);
五,cookie的應用