每天对自己多问几个为什么,总是有着想象不到的收获。 一个菜鸟小白的成长之路(copyer)
特点:
- cookie由
服务端
生成,保存在浏览器端的一小段信息 - cookie是以
键和值
的形式进行存储 - 浏览器在访问一个网站的服务器时,会自动在请求头中把本网站相关的所有cookie发送给服务器
- cookie是基于域名安全的
- cookies有过期时间,默认关闭浏览器之后过期
解释:cookie是基于域名安全的
最开始
百度的服务器给浏览器返回一个百度cookie
,在访问百度的时候,就会携带百度cookie
,而不会携带谷歌提供的cookie
, 这就是所谓的域名安全。
安装:
npm install cookie-parser
使用:
这里就是用了node中的express进行演示(需要了解下)
const cookieParser = require('cookie-parser')
app.use(cookieParser())
//设置cookie
app.get('/set_cookie', (req, res) => {
//设置过期时间为两个小时
res.cookie('name', 'james', { maxAge: 60 * 60 * 2 * 1000})
res.cookie('age', 21)
res.send('设置cookie')
})
//获取cookie
app.get('/get_cookie', (req, res) => {
console.log(res.cookie.name);
res.send('获取cookie')
})
初次访问/get_cookie
如果最开始访问:/get_cookie
,在它的请求头里面应该是没有cookie的,因为是没有进行设置的。
解释: 可以 get_cookie
的请求头里面的属性cookie
是没有携带任何信息的
并且在浏览器的地址栏显示cookie的地方也是只两个不是自己设置的cookie
设置cookie
访问 /set_cookie
, 就能设置两个 关于name , age 的cookie, 这下,我们在看下基本信息
解析: 当访问 /set_cookie
的时候,就可以在 响应头
里面 ,看见 两个Set-Cookie
,就是我们自己的设置的name和age的cookie, 一个是有过期时间(name: 2个小时),一个是没有过期时间的(age: 默认浏览器关闭之后就没有了)
也可通过浏览器查查看cookie的地方,显示,现在是已经有了四个cookie,增加了 name 和 age,还可以详细的查看过期时间
再次访问/get_cookie
当访问服务器的时候,cookie会携带在请求头里面,传递给服务器。看信息:
这次就可以成功的看到, cookie在请求头里面被携带到服务器中,并且 cookie是以明文的形式存在
画图总结
比较的潦草,大概的过程就是这样吧
为什么?
1、cookie在哪里产生
服务器
2、cookie保存在哪里
浏览器
3、cookie优缺点
优点:
- 在cookie中存放不敏感数据,即使被盗也不会有重大损失
- 控制cookie的生命期,使之不会永远有效。偷盗者很可能拿到一个过期的cookie。
缺点:
- Cookie数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。