【问题标题】:Cannot read property 'program' of undefined in cookies?无法读取 cookie 中未定义的属性“程序”?
【发布时间】:2019-01-11 15:06:24
【问题描述】:

我是Nodejs程序的初学者我尝试做简单的cookie程序。我成功设置和删除cookies。但我无法获取我之前设置的cookies。它显示一个错误。谁能告诉我如何获取nodejs中的cookie提前谢谢....

const express=require("express");
const cookieParser=require("cookie-parser");
const app=express();
const router=express.Router();
const port=process.env.Port||8086;
app.use(router);
app.use(cookieParser());
router.get("/setcookie",function(req,res)
{
    console.log("Come in to set the cookie");
    res.cookie("program","NodeJS"/*,{maxAge:60000}*/);
    res.cookie("Database","MongoDB"/*,{maxAge:1200000}*/);
    console.log("Cookie set successfully");
    res.send("Cookie set successfully");
});
router.get("/deletecookie",function(req,res)
{
    console.log("come in to delete the cookie");
    res.clearCookie("program");
    res.send("Cookie deleted successsfully");
});
router.get("/getcookie",function(req,res)
{
    console.log("Come in to read the cookie");
    console.log(req.cookies['program']);
    console.log(req.cookies['Database']);
    res.send("Cookie Accessed successfully");
});
app.listen(port,function()
{
    console.log("server is listening on port 8086");
});


ERROR I GOT:

TypeError: Cannot read property 'program' of undefined
    at C:\Users\VIGNESH\WebstormProjects\cookies-middleware\simple-cookies.js:25:28
    at Layer.handle [as handle_request] (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\index.js:174:3)
    at router (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\index.js:47:12)

【问题讨论】:

    标签: node.js express cookies


    【解决方案1】:

    你需要在router之前添加cookieParser(),所以代码是

    app.use(cookieParser());
    app.use(router);
    

    因为否则控件甚至无法进入cookieParser

    【讨论】:

    • 谢谢你,它工作得很好......你能建议关于 nodejs 中的签名 cookie
    • 酷。签名 cookie 有一个签名,因此它可以检测是否有人修改了 cookie,以防止会话劫持和类似的东西。你可以在这里查看:stackoverflow.com/questions/11897965/…。如果您喜欢答案,可以将其标记为已接受。以便其他人得到帮助:)
    猜你喜欢
    • 2016-03-12
    • 2021-11-03
    • 2019-06-08
    • 1970-01-01
    • 2021-09-16
    • 2020-04-06
    • 2020-10-30
    • 2019-10-09
    • 1970-01-01
    相关资源
    最近更新 更多