Express和ejs <%=呈现JSON

pig*_*ack 72 javascript json ejs express

在我的index.ejs中我有这个代码:

var current_user = <%= user %>
Run Code Online (Sandbox Code Playgroud)

在我的节点中我有

app.get("/", function(req, res){
    res.locals.user = req.user
    res.render("index")
})
Run Code Online (Sandbox Code Playgroud)

但是,在我获得的页面上

var current_user = [object Object]
Run Code Online (Sandbox Code Playgroud)

如果我写

var current_user = <%= JSON.stringify(user) %>
Run Code Online (Sandbox Code Playgroud)

我获得:

var current_user = {&quot;__v&quot;:0,&quot;_id&quot;:&quot;50bc01938f164ee80b000001&quot;,&quot;agents&quot;:...
Run Code Online (Sandbox Code Playgroud)

有没有办法传递一个JS可读的JSON ?

pig*_*ack 177

哦,这很容易,不要使用<%=,<%-而是使用.例如:

 <%- JSON.stringify(user) %>
Run Code Online (Sandbox Code Playgroud)

第一个将以HTML格式呈现,第二个将呈现变量(因为它们是,eval)

  • 正确的答案,但只是为了精确,它是<% - JSON.stringify(user)%>渲染魔术. (23认同)

use*_*456 5

注意力!

如果用户可以通过 API 调用创建,<%- 会给你留下严重的 XSS 漏洞。可以在此处找到可能的解决方案:

在 ExpressJS 中将变量传递给 JavaScript