ExpressJs--cookie的使用

一、Cookie 简介
● cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域
名的时候共享数据。
● HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页
面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何
关系的。
● Cookie 是一个简单到爆的想法:当访问一个页面的时候,服务器在下行 HTTP 报文中,
命令浏览器存储一个字符串; 浏览器再访问同一个域的时候,将把这个字符串携带到上行
HTTP 请求中。第一次访问一个服务器,不可能携带 cookie。 必须是服务器得到这次请求,
在下行响应报头中,携带 cookie 信息,此后每一次浏览器往这个服务器发出的请求,都会
携带这个 cookie。


二、Cookie 特点
● cookie 保存在浏览器本地,如果没有过期时间关闭浏览器再打开还是存在的。
● 正常设置的 cookie 是不加密的,用户可以自由看到;
● 用户可以删除 cookie,或者禁用它
● cookie 可以被篡改
● cookie 可以用于攻击
● cookie 存储量很小。未来实际上要被 localStorage 替代,但是后者 IE9 兼容。

 

三、Cookie 的使用

获取cookies

简单使用案例:

cookie.js

let express = require('express');
let app = new express();

let cookieParser = require('cookie-parser');

app.use(cookieParser())

// 获取cookie
app.get('/',(req,res) => {
    res.send(`获取到的cookie值为:${req.cookies.username}`)
})
// 本地设置cookie
app.get('/set',(req,res) => {
    /*
    参数1:存储变量
    参数2:变量值
    参数3:cookie的配置信息{maxAge:失效时间}
    */
    res.cookie('username','muzidigbig',{maxAge:60000})
    res.send('设置cookie成功')
})
app.listen(8010)

 

四、加密 Cookie(让用户看不到cookie明文信息的步骤)

1.配置中间件的时候需要传参

var cookieParser = require('cookie-parser');

//使用中间件的时候需要给参数,任意给
app.use(cookieParser('123456'));

2.设置 cookie 的时候配置 signed 属性为true

res.cookie('userinfo','hahaha',{domain:'.ccc.com',maxAge:900000,httpOnly:true,signed:true});

3. signedCookies 调用设置的 cookie

console.log(req.signedCookies);

案例:

signedCookie.js

let express = require('express');
let app = new express();

let cookieParser = require('cookie-parser');

//使用中间件的时候需要给参数,任意给(加密cookie)
app.use(cookieParser('123456'))

// 获取加密cookie
app.get('/',(req,res) => {
    res.send(`获取到的cookie值为:${req.signedCookies.username}`)
})
// 本地设置加密cookie
app.get('/set',(req,res) => {
    /*
    参数1:存储变量
    参数2:变量值
    参数3:cookie的配置信息{maxAge:失效时间,domain:用来设置多个二级域名共享cookie(别外一个也可进行访问),signed:true(加密cookie)}
    */
    res.cookie('username','muzidigbig1',{maxAge:6000000,signed:true})
    res.send('设置cookie成功')
})
app.listen(8010)

 

 

cookie的应用案例:

功能:在/lvyou?citys=城市上面不断改变城市的名字进行访问,然后在/页面上就可以显示你访问过哪些城市

cookieUse.js

let express = require('express')
let app = new express()

let cookieParser = require('cookie-parser')
app.use(cookieParser())

app.get('/',(req,res) => {
    res.send('您浏览过的城市: '+req.cookies.citys)
})
/** 
 * 您浏览过的城市:
 * /lvyou?city=北京 /lvyou?city=上海 /lvyou?city=武汉 /lvyou?city=杭州
*/
app.get('/lvyou',(req,res) => {
    
    let city = req.query.citys;//获取当前城市
    let citys = req.cookies.citys;//数组,获取所有城市
    if(citys){
        citys.push(city)
    }else{
        citys = [];//没有浏览过任何城市的话,citys改为数组
        citys.push(city)
    }
    res.cookie('citys',citys,{maxAge:9000000000})
    res.send('您浏览的当前城市:'+city)
})

app.listen(8011)

效果:

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值