首页 > 解决方案 > 使用 express 在 cookie 中发送数组不起作用

问题描述

我目前正在做一个项目,我需要给用户一个数组。为此,我正在尝试使用 res.cookie() 函数。但是,每当我尝试为用户提供一个数组作为 cookie 数据时,浏览器都会将数据作为字符串获取(还添加了一个我无法理解的“j”)。

后端代码:

homepageRouter.get('/',(req,res) => {
res.cookie("likedProjects", "checkstring");
res.cookie("supportedProjects", [2500,4,6]);
res.sendFile('/pages/homepage.html',{root:rootDir});    

});

“检查字符串”工作得很好,但是当我查看第二个 cookie 时,它​​的数据以字符串形式出现:

j:[2500,4,6]

有没有办法确保 cookie 数据将作为数组在浏览器中接收?

标签: javascriptnode.jsangularjsexpresscookies

解决方案


实际上,我认为你可能做错了什么。您是否使用任何 cookie 解析中间件(cookie-parser是 express.js 的官方中间件)?我试图用这样的方式重现您的问题,cookie-parser并且得到一个不是字符串的普通数组。

const cookieParser = require("cookie-parser");
const express = require("express");
const app = express();

app.use(cookieParser());
app.get("/set", (req, res) => {
  res.cookie("hi", [12, 12, 12])
  res.send("hi");
  // For the sake of this example I wrote it this way but you can also do
  // res.cookie("hi", [1,2,3]).send("hi")
});
app.get("/log", (req, res) => {
  console.log(req.cookies.hi);
  res.send(`logged in console this value also: ${req.cookies.hi}`)
});

app.listen("4433");

希望这有帮助


推荐阅读