Express全系列教程之(六):cookie的使用

1、關於Cookie

在咱們關閉一個登陸過的網址並從新打開它後,咱們的登陸信息依然沒有丟失;當咱們瀏覽了商品後歷史記錄裏出現了咱們點擊過的商品;當咱們推回到首頁後,推薦商品也爲咱們選出了類似物品;事實上當咱們有過此類操做後,瀏覽器會將咱們的操做信息保存到cookie上面。阿進而言之,cookie就是儲存在用戶本地終端上的數據。javascript

Cookie的特色

1.cookie保存在瀏覽器本地,只要不過時關閉瀏覽器也會存在。
2.正常狀況下cookie不加密,用戶可輕鬆看到
3.用戶能夠刪除或者禁用cookie
4.cookie能夠被篡改
5.cookie可用於攻擊
6.cookie存儲量很小,大小通常是4k
7.發送請求自動帶上登陸信息

  

2、Cookie的安裝及使用

  1.安裝java

cnpm install cookie-parser --save

  2.引入express

const cookieParser=require("cookie-parser");

  3.設置中間件npm

app.use(cookieParser());

  4.設置cookie瀏覽器

res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});
//res.cookie(名稱,值,{配置信息})

  關於設置cookie的參數說明:服務器

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。

httpOnly:是微軟對 COOKIE 作的擴展。若是在 COOKIE 中設置了「httpOnly」屬性,則經過程序(JS 腳本、applet 等)將沒法讀取到COOKIE 信息,防止 XSS 攻擊的產生 。

singed:表示是否簽名cookie, 設爲true 會對這個 cookie 簽名,這樣就須要用 res.signedCookies 而不是 res.cookies 訪問它。被篡改的簽名 cookie 會被服務器拒絕,而且 cookie 值會重置爲它的原始值。

  5.獲取cookiecookie

req.cookie.name;

  下面是一個基礎實例:app

const express=require("express");
const cookieParser=require("cookie-parser");

var app=express();

//設置中間件
app.use(cookieParser());

app.get("/",function(req,res){
	res.send("首頁");
});

//設置cookie
app.get("/set",function(req,res){
	res.cookie("userName",'張三',{maxAge: 20000, httpOnly: true});
	res.send("設置cookie成功");
});

//獲取cookie
app.get("/get",function(req,res){
	console.log(req.cookies.userName);
	res.send("獲取cookie成功,cookie爲:"+ req.cookies.userName);
});

app.listen(8080);

  當訪問set路由後會設置cookie,當訪問get路由後會獲取到設置的cookie值。固然你也能夠在其餘頁面繼續獲取當前cookie,以實現cookie共享。dom

 

3、多個二級域名共享cookie

只須要增長res.cookie中option對象的值,便可實現對相應路由下多個二級路由的cookie進行共享,代碼以下:ui

const express=require("express");
const cookieParser=require("cookie-parser");

var app=express();

//設置中間件
app.use(cookieParser());

app.get("/",function(req,res){
	res.send("首頁");
});

//設置cookie
app.get("/set",function(req,res){
	res.cookie("userName",'張三',{maxAge: 200000, httpOnly: true,domain: "ccc.com"});
	res.send("設置cookie成功");
});

//獲取cookie
app.get("/get",function(req,res){
	console.log(req.cookies.userName);
	res.send("獲取cookie成功,cookie爲:"+ req.cookies.userName);
});

app.listen(8080);

  咱們能夠看到:

 

不一樣的二級域名也能訪問到相同的cookie,只要知足ccc.com這個頂級域名就行。關於下一章我會講解cookie加密(簽名),先寫到這裏吧!

相關文章
相關標籤/搜索