一,Cookie简介
(1),存储数据,是存储于访问者的计算机中的变量,
(2),http是无状态协议,也就是说,当你访问一个网页后再访问这个网站的另一个网页,服务器是不知道这是同一个浏览器用户在访问同一个网站,即不知道是谁发起的链接
(3),cookie的使用:当访问一个页面的时候,服务器在http的下行报文中,命令浏览器存储一个字符串。
当浏览器再次访问同一个域的时候,就把这个字符串带到上行http请求中。
第一次访问一个服务器,不会带cookie,
应用场景:比如登录的时候,等用户下次打开网页的时候不需要再次登录了,减少了一些步骤。
二,Cookie特点
(1)cookie保存在浏览器本地,
如果不设置cookie的过期时间,在浏览器关闭的时候就失效了,
另一种删除cookie的方法是调用name例如:setCookie("cookieName") //cookieName将从客户机删除
(2)正常设置的cookie是不加密的,用户可以自由看到
(3)用户可以删除cookie,或禁用
(4)cookie可以篡改
(5)cookie可以用于攻击
(6)cookie存储量很小。(本地的存储量比较大localStorage)一个域名下存储的cookie数量是有限的
(7)不同浏览器存放cookie的位置不一样
三,Cookie的使用
1, 安装 :npm i cookie-parser
2, 引入:var cookieParser=require('cookie-parser')
3,设置中间件: app.use(cookieParser())
4, 设置cookie: res.cookie("name","li",{maxAge:9000,httpOnly:true})
5, 获取cookie;req.cookies.name,(原生获取的方法是document.cookie())
设置cookie原理
如果想让它过期,expries设置为-1;
获取cookie原理
过程,访问的时候会先看看是否有sessionid,如果没有则生成,如果有的话,http则携带这个sessionid值
浏览器访问服务器的时候会
四,Cookie加密(通过加密和安全传输SSL,可以减少cookie被破解的可能性)
1,配置中间件的时候需要传参
var cookieParser=require('cookie-parser')
app.use(cookieParser("123456"))
2,设置cookie的时候配置signed属性
在cookie-parser里面signed:true设置: res.cookie("name","cookie的值",{maxAge:9000,signed:true})
3,signedCookies调用设置的cookie
console.log(req.signedCookies)
-------------------------未完待续-----------------------------------------------------