使用express在cookie中发送数组不起作用

cpjpxq1n  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(343)

我目前正在做一个项目,我需要给用户一个数组。为此,我尝试使用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});

});
“checkstring”工作正常,但当我查看第二个cookie时,它的数据会以字符串的形式显示出来:

j:[2500,4,6]

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

5anewei6

5anewei61#

使用json字符串化

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

然后重新尝试

const json_str = getCookie('supportedProjects');
const arr = JSON.parse(json_str);
idfiyjo8

idfiyjo82#

事实上,我想你可能做错了什么。您是否使用任何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");

希望这有帮助

相关问题