文章目录
- 1.cookie是什么?
- 2.cookie的存储位置
- 3.什么是无状态问题,以及如何解决
- 4.存储在客户端的好处
- 5.cookie的主要特点
- 6.cookie的缺点
- 7.cookie的产生过程
- 8.cookie的使用步骤
- 1.安装依赖
- 2.引入依赖
- 3.在中间件注册
- 9.cookie代码示例
- 10.cookie的有效期
1.cookie是什么?
Cookie 是一种在客户端存储数据的机制,是HTTP协议中用来解决无状态问题的技术
(本质就是一个响应头
)。由服务器发送到客户端
,客户端收到以后将其存储
,并在下次向服务器发送请求时传回给服务器
,这样服务器就可以根据cookie来识别出客户端了。
2.cookie的存储位置
Cookie存储在客户端中
,是一小段文本数据
,由服务器发送到客户端
。它包含有关用户的偏好、会话信息、登录状态等。后续用户每次发送请求都会带着cookie(带着关于自己的信息)。服务器收到之后就可以辨别是谁发来的请求了,从而解决了服务器处理请求的无状态问题
3.什么是无状态问题,以及如何解决
无状态问题指的是在 Web 应用中,服务器在处理每个请求时,不保留任何与特定客户端或请求相关的状态信息。
这意味着服务器无法识别不同请求之间的关联。
-
无状态问题可能导致以下影响:
-
- 无法维持会话:用户每次请求都需要重新进行身份验证。
-
- 缺乏个性化体验:不能根据用户的历史行为提供个性化服务。
-
- 难以实现购物车等功能:无法跟踪用户的选择和操作。
-
-
为了解决无状态问题,常采用以下方法:
-
- 使用 Cookie:在客户端存储状态信息。
-
- 使用 Session:在服务器端存储状态信息。
-
- 使用令牌:例如 JSON Web Token(JWT)。
-
通过这些技术,可以在无状态的 Web 应用中实现状态管理,提供更好的用户体验和功能。
4.存储在客户端的好处
- 减少服务器的负载,因为部分数据可以直接在客户端处理。
- 提供更快的访问速度,无需每次请求都传输相同的信息。
为了最大程度地利用 Cookie 的优势并降低风险,开发人员通常会采取一些措施,如加密敏感信息、设置合适的有效期等。
5.cookie的主要特点
- 存储少量数据:例如用户偏好、会话信息等。
- 提高性能:减少服务器端的负载。
- 识别用户:用于个性化设置和跟踪用户行为。
- 生命周期:可设置有效期。
6.cookie的缺点
- 隐私问题:不能存储敏感信息。
- 大小限制:有容量限制。
- 安全性:存储在客户端可能被篡改或伪造。
7.cookie的产生过程
- 服务器在处理客户端的请求时,根据业务需求确定要设置的 Cookie 信息,包括名称、值和其他相关属性。
- 服务器将 Cookie 信息添加到响应头中。
- 在客户端接收到服务器的响应后,浏览器会解析响应头中的 Cookie 信息。
- 浏览器将 Cookie 存储在本地,以便在后续的请求中携带。
服务器发送 Cookie 到客户端的方式是通过在响应头中设置相关的字段。具体来说,服务器会将 Cookie 的名称、值等信息以特定的格式包含在响应头中,客户端浏览器接收到响应后,会根据约定的规则解析和处理这些 Cookie。
在后续的客户端请求中,浏览器会自动将存储的 Cookie 附加到请求头中,发送给服务器。服务器可以通过读取请求头中的 Cookie 信息,获取与客户端相关的状态和数据。
这样,通过 Cookie 的传递,服务器可以在多个请求之间保持对客户端的状态跟踪,实现诸如用户认证、个性化设置等功能。
8.cookie的使用步骤
1.安装依赖
yarn add express-parser -D
//或
npm install express-parser
2.引入依赖
const cookieParser = require('cookie-parser')
3.在中间件注册
app.use(cookieParser())
9.cookie代码示例
const cookieParser = require('cookie-parser')
const express = require('express')
const app = express()
app.use(cookieParser())
app.get('/set', (req, res) => {
// 服务器通过res发给客户端
res.cookie('name', '张元英')
// 客户端将其存储下来
console.log(req.cookies)
res.send("cookie已经设置好了")
})
app.listen(6001,
console.log('服务器启动了')
)
10.cookie的有效期
默认是一个会话session,即关闭浏览器的话,一个会话就结束了,此时cookie将会被删除。
我们可以通过设置 maxAge 参数(单位毫秒)来设置cookie的有效期。
res.cookie('name', 'value', { maxAge: 3600000 });
一秒=1000毫秒
一分钟=60秒
360000毫秒=1小时
此时的失效期为
我们改一下
可以看到响应头里面的失效期为1小时。一小时后,浏览器内的cookie将被删除。