1. 什么是cookie
- cookie 就是浏览器储存在用户电脑上的一小段文本文件,cookie 是纯文本格式,不包含任何可执行的代码。
- 一个 Web 页面或服务器告知浏览器按照一定规范来储存这些信息,并在随后的请求中将这些信息发送至服务器,Web 服务器就可以使用这些信息来识别不同的用户。
为什么会出现cookie:
- 在早期,服务器无法知道两个请求是否来自同一个浏览器
- 前后端的交互因为HTTP无状态的特性受到阻碍了
- 出现了cookie在客户端保存状态,每次客户端发送请求会携带cookie的值到服务器进行处理。
cookie的工作:
- 浏览器发送请求给服务器
- 服务器设置cookie的值
- 浏览器中保存了cookie的值
cookie的属性
- value——指定cookie的值
- expires——指定cookie过期时间,格式采用Date.toUTCString(),将Date对象转换为字符串
- domain——指定cookie所在的域名,如果未指定,默认为设定该cookie`的域名
- path——用来指定路径,如果未指定,默认为请求该 cookie 的网页路径,也就是根目录/
- secure——指定cookie只能在加密协议HTTPS下发送到服务器。
- max-age——指定cookie有效期。
- HttpOnly——设置该cookie不能被JavaScript读取
2. 使用方法
前端在设置
document.cookie = "path=/";
,可以设置其他的属性,以分号分隔,我这里就是举个例子。服务器接收请求之后设置cookie的值 (登陆时进行的验证)
const login = require('../dbs/login-db');
const express = require('express');
const router = express.Router();
router.post('/login', (req, res)=> {
login(req.body, (docs)=> {
if (docs.length === 0) {
res.send(false);
} else {
if (docs[0].password === req.body.password) {
req.session.userName = docs[0].name;
var Cookies = {};
//读取请求的cookie
req.headers.cookie && req.headers.cookie.split(';').forEach(function (Cookie) {
var parts = Cookie.split('=');
Cookies[parts[0].trim()] = ( parts[1] || '' ).trim();
});
if (Cookies.user !== req.session.userName) {
console.log('user');
//这里设置cookie的值,也可以设置很多的属性,这里仅仅是举例
res.cookie('user', req.session.userName);
}
res.send(true);
} else {
res.send(false);
}
}
});
});
module.exports = router;
一定要刷新界面,别问我为什么,刷新界面之后可以查看到Request Headers
中有了Cookie
的内容,找到chorm浏览器中以下内容: