因爲http協議是無狀態的,因此無法知道當前訪問的客戶端是誰,因此有了cookie這個東西,經過cookie來讓服務端知道當前是誰訪問我,能夠看作是一個身份牌前端
(1) 第一次用戶登陸的時候,輸入用戶名和密碼信息,服務端接收後進行用戶認證。node
(2)服務端經過驗證後,生成一個token以cookie的形式放在http的response header中一塊兒返回給客戶端。後端
(3)瀏覽器根據是否設置cookie的過時時間判斷該cookie是會話cookie仍是永久cookie,並將cookie存儲在不一樣的位置。跨域
(4)下次進行http請求時,請求頭中會自動攜帶存儲的cookie。瀏覽器
(5)服務端根據請求頭中的cookie裏面的token確認該用戶的身份信息。服務器
cookie 一般由後端配置(固然前端也可配置),經過在http響應頭部設置cookie來添加cookiecookie
使用document.cookie便可dom
好比:ui
document.cookie = 'name=ry;max-age=2000;domian=ryuan.me;path=/;secure'
cookie有如下的屬性:this
經過設置響應頭部信息,添加cookie,經過http響應返回給瀏覽器便可,瀏覽器收到cookie會自動保存下來。
var http = require('http'); http.createServer(function(req,res){ res.setHeader('status','200 ok'); res.setHeader('Set-Cookie','name=yyyy;max-age=10000;path=/;'); res.write('hello this is cookie test!!'); res.end(); }).listen(8800,()=>{ console.log('sever start at 8800'); });
後端能夠設置cookie的屬性,除了上述前端能夠設置的以外,還有兩個:
前提:cookie在不一樣的域之間是不能夠訪問,修改的。可是在同一個一級域裏面,cookie是能夠共享的。
在設置cookie時對domain賦值成同一一級域名便可
好比node中:
res.setHeader('Set-Cookie','name=yyyy;max-age=10000;path=/;domain=qq.com';)
我的筆記總結,僅供參考,大步走多回頭
等什麼望穿秋水 任來世枯朽成灰