【问题标题】:ExpressJS returning empty object when logging req.cookiesExpressJS 在记录 req.cookies 时返回空对象
【发布时间】:2021-08-25 18:37:45
【问题描述】:

我有一个这样设置的快速服务器:

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

app.use(express.json());
app.use(cors());
app.use(cookieParser());

app.post("/", (req, res) => {
  console.log(req.cookies)
  res.send();
});

app.listen(5000);

它的输出是一个空对象,但在我的客户端(即发出请求)中,如果我记录document.cookie,它会打印一个包含许多值的字符串。知道为什么服务器日志中没有显示相同的内容吗?

EDIT`:确切的日志是[Object: null prototype] {}

这是请求:

const login = async () => {
  const resp = await fetch("http://localhost:5000", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({msg: "example"}),
  });
  
};

login();

【问题讨论】:

  • 你能给我看看饼干吗?
  • 你的意思是当我在浏览器控制台中输入document.cookie 时记录了什么?`
  • 是的,cookie的格式是这样的:somethin=something
  • 好的,你去吧 id=2; csrftoken=plLDHj4jaAaH3Uow5Cj3cpBtupcIBIy8892834GfE9PLY8CF7oofwAWGveKK"
  • 你是否将cookie附加到请求的头部?

标签: javascript node.js express http cookies


【解决方案1】:

我遇到了和你一样的问题。但是我在 ReactJS 中使用了 useSWR 钩子,并通过该帖子找到了解决方案:How to send headers using swr

在您的请求中使用"credentials" : include 尝试您的代码,如下所示:

const login = async () => {
  const resp = await fetch("http://localhost:5000", {
    method: "POST",
    headers: {
    "Content-Type": "application/json",
    },
    "credentials" : include,
    body: JSON.stringify({msg: "example"}),
  });
  
};

login();

【讨论】:

    猜你喜欢
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多