1.Cookie简介
- cookie是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域名的时候共享数据。
- HTTP是无状态协议。
- 当初次访问一个服务器,不可能携带cookie。必须是服务器得到这次请求,在下行响应报头中,携带cookie信息,伺候每一次浏览器往这个服务器放松的请求,都会携带这个cookie。
2.Cookie特点
- cookie保存在浏览器本地。
- 正常设置的cookie是不加密的,用户可以自由看到。
- 用户可以删除cookie,或者禁用它。
- cookie可以被篡改。
- cookie可以用于攻击。
- 默认情况下,cookie是一个会话级别的,用户推出浏览器后被删除
3.Cookie的属性
- Web服务器通过传送HTTP 包头中的Set-Cookie 消息把一个cookie 发送到用户的浏览器中,如下示例:
Set-Cookie: name=value; Path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT;
属性 | 含义 |
---|---|
name=value | 键值对,可以设置要保存的 Key/Value,注意这里的 name 不能和其他属性项的名字一样 |
Expires | 过期时间(秒),在设置的某个时间点后该 Cookie 就会失效,如 expires=Wednesday, 09-Nov-99 23:12:40 GMT |
maxAge | 最大失效时间(毫秒),设置在多少后失效 |
secure | 当 secure 值为 true 时,cookie 在 HTTP 中是无效,在 HTTPS 中才有效 |
Path | 表示 cookie 影响到的路,如 path=/。如果路径不能匹配时,浏览器则不发送这个Cookie |
httpOnly | 是微软对COOKIE做的扩展。如果在COOKIE中设置了“httpOnly”属性,则通过程序(JS脚本、applet等)将无法读取到COOKIE信息,防止XSS攻击产生 |
4.Cookie在node(express)中的使用
- 安装:
$ npm install cookie-parser
- 步骤:
- 示例
var express = require('express');
var cookieParser = require('cookie-parser');
var app = express();
app.use(cookieParser());
app.get('/', function (req, res) {
// 检查 session 中的 isVisit 字段是否存在
// 如果存在则增加一次,否则为 session 设置 isVisit 字段,并初始化为 1。
if (req.cookie.isVisit) {
req.cookie.isVisit++;
res.send('<p>第 ' + req.cookie.isVisit + '次来此页面</p>');
} else {
req.cookie.isVisit = 1;
res.send("欢迎第一次来这里");
console.log("Cookies: ", req.cookies); //打印cookie
}
});
app.listen(80);