【问题标题】:sending array in cookie using express is not working使用 express 在 cookie 中发送数组不起作用
【发布时间】:2021-06-10 01:53:18
【问题描述】:

我目前正在做一个项目,我需要给用户一个数组。为此,我正在尝试使用 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数据会在浏览器中作为数组接收?

【问题讨论】:

    标签: javascript node.js angularjs express cookies


    【解决方案1】:

    使用 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);
    

    【讨论】:

      【解决方案2】:

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

      希望对你有所帮助

      【讨论】:

      • 我尝试过使用cookie解析器,但是当我使用它时,浏览器卡在了请求上(可能是因为一开始没有cookie)。我该如何解决?在第一页添加一个虚拟 cookie?
      • 您真的要发送响应了吗?有没有错误?检查您的控制台
      猜你喜欢
      • 2019-06-28
      • 1970-01-01
      • 2019-01-27
      • 2021-03-05
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 2012-01-16
      相关资源
      最近更新 更多