web-dev-qa-db-fra.com

Express et ejs <% = pour rendre un JSON

Dans mon index.ejs j'ai ce code:

var current_user = <%= user %>

Dans mon noeud j'ai

app.get("/", function(req, res){
    res.locals.user = req.user
    res.render("index")
})

Cependant, sur la page que j'obtiens

var current_user = [object Object]

et si j'écris

var current_user = <%= JSON.stringify(user) %>

J'obtiens:

var current_user = {&quot;__v&quot;:0,&quot;_id&quot;:&quot;50bc01938f164ee80b000001&quot;,&quot;agents&quot;:...

Y at-il un moyen de passer un JSON qui sera JS lisible?

69
piggyback

Oh, c'était facile, n'utilisez pas <%=, utilisation <%- au lieu. Par exemple:

 <%- JSON.stringify(user) %>

Le premier rendra en HTML, le second rendra les variables (telles quelles, eval)

171
piggyback

Attention!

Si l'utilisateur peut être créé via des appels d'API, <% - vous exposerait à une vulnérabilité XSS grave. Les solutions possibles peuvent être trouvées ici:

Passer les variables à JavaScript dans ExpressJS

4
user732456