欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 会话管理中的cookie,以及浏览器操作cookie,在express中设置,删除,和获取cookie

会话管理中的cookie,以及浏览器操作cookie,在express中设置,删除,和获取cookie

2025/7/2 20:01:46 来源:https://blog.csdn.net/qq_34645412/article/details/147961582  浏览:    关键词:会话管理中的cookie,以及浏览器操作cookie,在express中设置,删除,和获取cookie

会话管理中的 Cookie以及在浏览器和 Express 中操作 Cookie


🍪 一、Cookie 在会话管理中的作用

✅ Cookie 的定义:

Cookie 是服务器发送到浏览器并保存在本地的小段文本数据,浏览器会在之后的请求中将这些数据回传给服务器。

✅ Cookie 的作用:

  • 维持会话(如:登录状态、购物车)
  • 记录用户信息(如:主题设置、语言偏好)
  • 跟踪用户行为(如:访问记录、广告推荐)

🧠 二、Cookie 的特点

特性说明
大小限制单个 Cookie 大小最多约 4KB
数量限制每个域名下最多 20~50 个
自动发送浏览器自动将同源 Cookie 携带到请求头中
安全性较低可被拦截/篡改,敏感信息应避免存 Cookie 中
支持设置属性expiresmax-agehttpOnlysecuresameSite

🌐 三、浏览器操作 Cookie(前端)

✅ 1. 读取 Cookie:

console.log(document.cookie); // "username=admin; token=xxx"

✅ 2. 设置 Cookie:

document.cookie = "username=admin";
document.cookie = "theme=dark; max-age=3600"; // 1小时有效

✅ 3. 删除 Cookie:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";

⚠️ 删除 Cookie 的关键在于设置过期时间为过去。


🚀 四、在 Express 中操作 Cookie

Express 默认不支持 Cookie,需要中间件 cookie-parser

npm install cookie-parser

✅ 1. 初始化中间件

const express = require('express');
const cookieParser = require('cookie-parser');const app = express();
app.use(cookieParser());

✅ 2. 设置 Cookie

app.get('/set', (req, res) => {res.cookie('username', 'admin', {maxAge: 1000 * 60 * 60, // 1小时httpOnly: true,         // 前端无法通过 JS 访问});res.send('Cookie set!');
});

✅ 3. 读取 Cookie

app.get('/get', (req, res) => {const username = req.cookies.username;res.send(`Username is ${username}`);
});

✅ 4. 删除 Cookie

app.get('/delete', (req, res) => {res.clearCookie('username');res.send('Cookie deleted!');
});

🔒 五、常见 Cookie 属性说明

属性作用
maxAge设置 Cookie 存活时间(毫秒)
expires设置过期时间(Date 类型)
httpOnly只允许服务器访问,防止 XSS 攻击
secure只在 HTTPS 下传输
sameSite防止 CSRF,可设为 StrictLaxNone
path设置 Cookie 生效路径
domain设置 Cookie 作用域

✅ 六、总结:Cookie vs Session 区别(简表)

特性CookieSession
存储位置客户端服务器端
安全性较低,容易被窃取较高,存储在服务器上
大小限制有限制(4KB)无明显限制
保持状态客户端持久化服务端维护
生命周期可控(Expires / max-age)一般依赖服务器超时设置

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词