req.cookies 是 Express 路由器上的 [Object: null prototype] {}
req.cookies is [Object: null prototype] {} on express router
我目前正在尝试获取一些用于身份验证的 cookie。我正在使用后端 API 和反应前端来使网站正常运行。但是,一旦我尝试使用 express 在后端获取 cookie,我得到的唯一响应是:[Object: null prototype] {}
Cookie 已存储 correctly,但无法访问。知道为什么会这样吗?这是我的代码:
const { Router } = require("express");
const route = Router();
var cookieParser = require('cookie-parser');
route.use(cookieParser());
route.get("/", async (req, res) => {
console.log(req.cookies)
})
知道为什么它一直这样做吗?谢谢你的帮助:D
编辑
我只是注意到当我使用 fetch 时,它返回未定义,如果我手动访问地址,它会给我正确的 cookie。参见 here
我正在使用这段代码来获取:
fetch(`${config.hosts.INTERNAL_API}/`, {
method: "GET",
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
}).then(res => res.json()).then(data => this.setState(data))
尝试将 credentials: 'include'
添加到您的提取调用中,如下所示:
fetch(`${config.hosts.INTERNAL_API}/`, {
method: "GET",
credentials: "include",
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
}).then(res => res.json()).then(data => this.setState(data))
手动访问地址时它起作用的原因是浏览器发出的 HTTP 请求默认在 header 中发送 cookie。 Fetch 没有。
我目前正在尝试获取一些用于身份验证的 cookie。我正在使用后端 API 和反应前端来使网站正常运行。但是,一旦我尝试使用 express 在后端获取 cookie,我得到的唯一响应是:[Object: null prototype] {}
Cookie 已存储 correctly,但无法访问。知道为什么会这样吗?这是我的代码:
const { Router } = require("express");
const route = Router();
var cookieParser = require('cookie-parser');
route.use(cookieParser());
route.get("/", async (req, res) => {
console.log(req.cookies)
})
知道为什么它一直这样做吗?谢谢你的帮助:D
编辑
我只是注意到当我使用 fetch 时,它返回未定义,如果我手动访问地址,它会给我正确的 cookie。参见 here
我正在使用这段代码来获取:
fetch(`${config.hosts.INTERNAL_API}/`, {
method: "GET",
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
}).then(res => res.json()).then(data => this.setState(data))
尝试将 credentials: 'include'
添加到您的提取调用中,如下所示:
fetch(`${config.hosts.INTERNAL_API}/`, {
method: "GET",
credentials: "include",
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
}).then(res => res.json()).then(data => this.setState(data))
手动访问地址时它起作用的原因是浏览器发出的 HTTP 请求默认在 header 中发送 cookie。 Fetch 没有。