![](/img/trans.png)
[英]Node.js won't recognise an Express object & I can't set paths to my CSS/JS
[英]Why I couldn't set cookies with Node.js express?
这是我的代码:
const app = express(); const cookieParser = require('cookie-parser'); app.use(cookieParser()); app.post("/pinfo", (req, res) => { var form = new formidable.IncomingForm(); form.parse(req, async function (err, fields) { var nhs_num = 1000000; // it should be a return value from another function using fields values as parameters res.cookie("nhsnum", nhs_num, { expires: new Date(Date.now() + 1000 * 60 * 5), httpOnly: true }); // set a cookie expired in 5 minutes console.log(req.cookies.nhsnum); }) });
代码在一个Node.js的服务器上,从HTML的客户端获取表单提交,然后使用表单详情获取结果,最后保存到cookie中。
当我尝试记录 cookie 时,控制台中有一个 undefined。 我不明白为什么。 有没有我做错的过程? 如果有人可以帮我解决这个问题,我真的很感激。
req.cookies
包含随传入请求一起到达的 cookies。 它不包含将在响应中设置并发送回客户端的 cookies。
因此,当您执行res.cookie(...)
时,它会向响应 object 添加一个 cookie(从技术上讲,向响应添加一个set-cookie
header ),以便客户端在收到响应时选择该 cookie。
如果您想在req.cookies
中查看 cookie,请在该客户端的下一个请求中查看req.cookies
(在 cookie 过期之前)。 您新创建的 cookie 应该会显示在下一个请求中。
在此请求中,您可以通过执行以下操作查看传出的 cookies:
console.log(res.getHeaders());
而且,您会看到这样的nhsnum
cookie:
[Object: null prototype] {
'x-powered-by': 'Express',
'set-cookie': 'nhsnum=1; Path=/; Expires=Mon, 03 Oct 2022 00:08:01 GMT; HttpOnly'
}
你的客户端和服务端是同源吗?如果不是,你应该在客户端页面设置请求模式, credentials: "include",
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.