【问题标题】:How to print cookie in .ejs view engine如何在 .ejs 视图引擎中打印 cookie
【发布时间】:2018-08-09 04:11:15
【问题描述】:

如何在表单属性中打印 cookie 值?

这是我目前的代码。

if(req.body.remember_me){
    res.cookie("cookie_email_id", req.body.email);
    res.cookie('password', req.body.password);
}else{
    res.clearCookie("cookie_email_id");
    res.clearCookie("password");
}

我已经在控制台 cookie 中检查了我的 Cookie 是否已设置

document.cookie

cookie_email_id=abc%40gmail.com; password=123456789

【问题讨论】:

  • 你想对cookie值做什么,你想把它分配给一个变量进行处理(例如查找用户数据库记录)?
  • 不,我想用 cookie 变量名自动填充表单值

标签: node.js express


【解决方案1】:

Cookies 可以从req.headers.cookie 获取,并且可以根据需要传递给 EJS 模板或其他任何地方。

例如:

在控制台打印 cookie:

router.get("/example"), (req, res) => { console.log(req.headers.cookie); }

【讨论】:

    【解决方案2】:

    要通过 ejs 预先填写表单输入,首先您需要通过 res.cookie() 设置 cookie。要在表单字段中自动填充这些值。您需要从请求中获取 cookie 并将其分配给你的渲染方法。

    为此,您可以像这样使用 cookie-parser 中间件并在 req.cookies/req.signedCookies 中获取 cookie 值。

    var express = require('express')
    var cookieParser = require('cookie-parser')
    
    var app = express()
    app.use(cookieParser())
    
    app.get('/', function (req, res) {
      // Cookies that have not been signed
      console.log('Cookies: ', req.cookies)
    
      // Cookies that have been signed
      console.log('Signed Cookies: ', req.signedCookies)
    })
    
    app.listen(8080)
    

    从路由中,您可以调用您的 ejs 渲染方法以及自动填充的所有属性

    类似

    res.render('user_profile',{name:req.cookies.name, age:req.cookies.age})
    

    然后您可以像这样将值放在您的 ejs 表单字段中

    <input type="text" id="name" value="%name%"/>
    <input type="text" id="age" value="%age%"/>
    

    【讨论】:

    • 这给了我不确定性,因为 Node.js 在客户端打开文件之前不知道从谁的浏览器获取 cookie,但页面已经呈现。
    【解决方案3】:

    当你回复时,试试这个:

    res.render("your_page", {email: req.body.email, password: req.body.password});
    

    并将emailpassword 设置为输入值(使用ejs)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-11
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 2022-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多