cookie介绍

1.cookie是什么?

Cookie 是一种在客户端存储数据的机制,是HTTP协议中用来解决无状态问题的技术(本质就是一个响应头)。由服务器发送到客户端客户端收到以后将其存储,并在下次向服务器发送请求时传回给服务器,这样服务器就可以根据cookie来识别出客户端了。

2.cookie的存储位置

Cookie存储在客户端中,是一小段文本数据由服务器发送到客户端。它包含有关用户的偏好、会话信息、登录状态等。后续用户每次发送请求都会带着cookie(带着关于自己的信息)。服务器收到之后就可以辨别是谁发来的请求了,从而解决了服务器处理请求的无状态问题

3.什么是无状态问题,以及如何解决

无状态问题指的是在 Web 应用中,服务器在处理每个请求时,不保留任何与特定客户端或请求相关的状态信息。
这意味着服务器无法识别不同请求之间的关联。

  • 无状态问题可能导致以下影响:

      1. 无法维持会话:用户每次请求都需要重新进行身份验证。
      1. 缺乏个性化体验:不能根据用户的历史行为提供个性化服务。
      1. 难以实现购物车等功能:无法跟踪用户的选择和操作。
  • 为了解决无状态问题,常采用以下方法:

      1. 使用 Cookie:在客户端存储状态信息。
      1. 使用 Session:在服务器端存储状态信息。
      1. 使用令牌:例如 JSON Web Token(JWT)。

通过这些技术,可以在无状态的 Web 应用中实现状态管理,提供更好的用户体验和功能。

4.存储在客户端的好处

  1. 减少服务器的负载,因为部分数据可以直接在客户端处理。
  2. 提供更快的访问速度,无需每次请求都传输相同的信息。

为了最大程度地利用 Cookie 的优势并降低风险,开发人员通常会采取一些措施,如加密敏感信息、设置合适的有效期等。

5.cookie的主要特点

  1. 存储少量数据:例如用户偏好、会话信息等。
  2. 提高性能:减少服务器端的负载。
  3. 识别用户:用于个性化设置和跟踪用户行为。
  4. 生命周期:可设置有效期。

6.cookie的缺点

  1. 隐私问题:不能存储敏感信息。
  2. 大小限制:有容量限制。
  3. 安全性:存储在客户端可能被篡改或伪造。

7.cookie的产生过程

  1. 服务器在处理客户端的请求时,根据业务需求确定要设置的 Cookie 信息,包括名称、值和其他相关属性。
  2. 服务器将 Cookie 信息添加到响应头中。
  3. 在客户端接收到服务器的响应后,浏览器会解析响应头中的 Cookie 信息。
  4. 浏览器将 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将被删除。

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值