cookie
HTTP cookie是由网站发送的一小块数据,用户在浏览时将其存储在用户的web浏览器上
概念
它以键值对的方式信息存储于用户硬盘,保存有关访问者的信息,它既可以在服务端设置也可以在客户端设置。
cookie被设计成一个可靠的机制,可以让网站记住有状态的信息(比如在网上商店里添加的商品),或者记录用户的浏览活动(包括点击特定的按钮,登录,或者记录过去访问过的页面)。它们还可以用来记住用户之前输入的表单字段的任意信息,比如姓名、地址、密码和信用卡号。
cookie的常设置的属性:Domain、Path、Expires/Max-age、HTTP、Secure,接下来我们以express作为服务端来看看cookie这几个属性
属性
Domain、Path
这两个属性表示cookies在哪个主域下的哪个路径下表示cookies可以共享。
比如,我在服务端在两个路由页面设置cookie,当访问/和/Child后,cookie信息是页面共享的
但修改path后,只能在path设置的路径下,可以共享cookie,而其它页面是不能共享。
app.get('/Child', function(req, res, next) {
res.cookie('nameChild', 'Child', { path: '/Child' });
res.render('index', { title: 'Child' });
});
Expires/Max-age
这个属性表示cookie的存储时间,存储的单位标准是GMT,即格林威治时间。
例如设置time=1的存储时间为60秒
var date = new Date();
date.setTime(date.getTime() + 60000);
document.cookie = "time=1" + ";expires=" + date.toUTCString();
max-age也是设置过期时间,但是它的单位是毫秒
同样将expire设置成一个过去的时间或者讲max-age=0,都能够达到删除cookie的效果
HttpOnly和secure
这两个属性都是基于cookie安全的,单位都是布尔值。
设置了HttpOnly,就禁止页面js修改cookie属性。
设置secure为true后,客户端只能通过https协议才能把cookie发送到服务端
不足
- cookie是明文传输,容易被拦截或者捕获内容
- cookie容量只有4KB,容量小
- 每次发送cookie,cookie都被添加到request header上,意味着cookie越大,请求头就越大,响应的时间就越长
总结
当访问web站点的,浏览器首先检索有没有与该站点相关联的cookie,如果有,就把cookie和并到请求头那里,随http请求一并发送到服务端,服务端和客户端都可以操作cookie,有一些操作cookie的属性,比如domain和path限制cookie的作用范围,Expires/Max-age决定cookie的存储时限,HttpOnly和secure限制cookie相关安全的操作,
cookie因为自身特点,适合存储一些不敏感,容量小的数据。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。