每天对自己多问几个为什么,总是有着想象不到的收获。 一个菜鸟小白的成长之路(copyer)
介绍
特点:
- session由
服务端
生成,保存在服服务端 - session是以
键和值
的形式进行存储 - session依赖于cookie,每个session信息对应的客户端的标识符保存着cookie中
解释: 为什么session依赖于cookies
可以知道session产生于
服务端
,并且保存在服务端
, 就是在服务端内部开辟一个内存,用来保存session,那么这个内容就有相应的标识符
(简单理解:就是内存的地址),然后把这个标识符保存在cookie
, 然后利用cookie的特性,每次请求都会携带cookie传送到服务端,那么服务端也就可以拿到session的标识符,从而拿去到相应的状态。
图解:
使用
安装:
npm install cookie-session
使用:
const cookieSessioin = require('cookie-session')
app.use(cookieSessioin({
name: 'my_session', // 后端给前端种cookie的名字叫做mycookie
keys: ['james', 'kobe'], //加密层级
maxAge: 60 * 60 * 1000 * 24 //失效时间(一天)
}))
//获取session
app.get('/get_session', (req, res) => {
console.log(req.session);
res.send('获取session')
})
//设置session
app.get('/set_session', (req, res) => {
req.session.name = 'james'
req.session.age = 22
res.send('设置session')
})
这里主要的注意的是: cookieSessioin 的 name属性
, 属性值, 就是cookie中的key中,其value值就session的标识符。
访问/set_session
第一次访问服务器的时候,就会设置session用来保存用户的状态,然后保存在服务端的内容中,在响应头设置cookie来保存session的标识符
这里可以看见,响应头里面,就有 Set-Cookie
属性,用来设置cookie, 这里也可以看见 my_session
这个key值就是上面设置的name的属性值,my_session的value就是session的标识符
访问/get_session
访问get_session
, 应该就可以看见请求头里面的cookie属性包含 my_session这个键值对
在请求头中的cookie中,成功的看到my_session
key值, 就说明session的标识符被携带服务器中,做着对应的操作
为什么?
1、session在哪里产生
服务器
2、session保存在哪里
服务器