设置cookie

本文介绍如何在Express.js中使用cookie-parser中间件来设置和获取cookie,包括普通cookie和签名cookie的区别及访问方式。

 

const express = require("express");
const app = express();
const port = 3000;
const cookieParser = require("cookie-parser");
app.use(cookieParser("test"));
// 设置cookie
app.get("/set", function(req, res) {
  res.cookie("name", "王金龙", { maxAge: 1000 * 5 });
  res.cookie("name2", "张三", { signed: true });
  res.send("cookie设置成功");
});
// 获取cookie
app.get("/get", function(req, res) {
  // 没有设置签名可以使用 cookies访问cookie
  res.send(req.cookies);
  // 设置签名之后就需要使用 signedCookies访问cookie
  console.log(JSON.stringify(req.signedCookies));
});
app.listen(port, () => console.log("http://127.0.0.1:3000"));

 

在 Web 开发中设置 Cookie 主要可以通过服务器端和客户端两种方式实现。Cookie 的作用是用于在客户端和服务器之间递信息,同时需要关注其安全性和隐私保护。 ### 通过服务器端设置 Cookie 在服务器端,例如使用 Django 框架时,可以通过响应对象设置 Cookie。具体方法是使用 `response.set_cookie` 函数,入键值对以及可选的参数,例如过期时间、路径等。如果需要取消 Cookie,可以将过期时间设置为当前时间[^2]。 ### 通过客户端设置 Cookie 在客户端,可以使用 JavaScript 来操作 Cookie。以下是一个简单的示例,展示如何设置带有过期时间的 Cookie: ```javascript // 获取系统当前时间 var oDate = new Date(); // 设置距离当前时间30天后过期 oDate.setDate(oDate.getDate() + 30); // 设置cookie及过期时间 document.cookie = "userName=hello;expires=" + oDate; document.cookie = "password=123456;expires=" + oDate; ``` 上述代码中,`document.cookie` 用于设置 Cookie,格式为 `键=值;expires=过期时间`。通过这种方式,可以设置多个 Cookie 项[^3]。 ### 通用的 Cookie 操作函数 为了简化 Cookie 的操作,可以编写一些通用的函数来实现 Cookie 的写入、读取和删除功能。例如: ```javascript // 写入 Cookie function setCookie(name, value) { var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString(); } // 读取 Cookie function getCookie(name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) { return unescape(arr[2]); } else { return null; } } // 删除 Cookie function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = getCookie(name); if (cval != null) { document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); } } ``` 这些函数分别实现了 Cookie 的写入、读取和删除功能。通过这些函数,可以更方便地管理 Cookie[^5]。 ### 注意事项 - Cookie 并没有直接的修改和删除功能,但可以通过覆盖或设置过期时间来实现间接的修改和删除。例如,修改 Cookie 时可以发送同名的 Cookie,这样旧的 Cookie 就会被覆盖;删除 Cookie 时可以设置同名 Cookie 的 `maxAge` 为 0[^4]。 - 在设置 Cookie 时,需要注意其安全性和隐私问题,合理使用 Cookie,以保护用户数据安全[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值