cookie:
1.定義:什么是cookie? cookie就是存儲在客戶端的一小段文本
2.cookie是一門客戶端的技術,因為cookie是存儲在客戶端瀏覽器中的
3.cookie的作用:是為了實現客戶端與服務器之間狀態的保持
4.cookie 技術不安全,不要使用cookie保存敏感信息
5.cookie默認 在瀏覽器關閉之后,就立即實現失效.如果想指定cookie的過期時間,需要通過使用expires屬性實現.在服務器響應返回響應頭時
寫入cookie的過期時間. 即響應頭設置 set-cookie:[expires=new.Date(Date.now() +10 *1000)] 10S后過期
原理:由於http協議是無狀態的.傳統服務器只能被動響應請求.當服務器獲取到請求,並為了能夠區分每一個客戶端,需要客戶端發送請求時發送一個標識符(cookie),
也因此為了提供這個標識符,產生了cookie技術.我們在請求頭(Request Headers)中添加了標識符(cookie). 每次發送請求,都會把這個cookie隨同其它報文一起發送給服務器.
服務器根據報文中cookie,進行區分客戶端瀏覽器.
如何設置表示符:
在node中可以在writeHeaer的時候通過Set-Cookie來將表示通過響應報文發送給客戶端 , 或客戶端通過插件 jquery.cookie
session:
由於http無狀態,服務器在每次連接中持續保存客戶端的私有數據,此時需要結合cookie技術,通過session會話機制,在服務器端保存每一個http請求的私有數據
原理:
在服務器內存開辟一塊內存空間,專門存放每個客戶端私有數據,每個客戶端根據cookie中保存的私有sessionId,可以獲取到獨屬於自己的session數據.
session在node中使用:
- 安裝session模塊
npm install express-session -S
- 導入session模塊
var session = require('express-session')
- 在express中使用
session
中間件:// 啟用 session 中間件 app.use(session({ secret: 'keyboard cat', // 相當於是一個加密密鑰,值可以是任意字符串 resave: false, // 強制session保存到session store中 saveUninitialized: false // 強制沒有“初始化”的session保存到storage中 }))
- 將私有數據保存到當前請求的session會話中:
// 將登錄的用戶保存到session中 req.session.user = result.dataValues; // 設置是否登錄為true req.session.islogin = true;
- 通過
destroy()
方法清空session
數據:req.session.destroy(function(err){ if(err) throw err; console.log('用戶退出成功!'); // 實現服務器端的跳轉,這個對比於 客戶端跳轉 res.redirect('/'); });