Подтвердить что ты не робот

Express и ejs <% = для рендеринга JSON

В моем index.ejs у меня есть этот код:

var current_user = <%= user %>

В моем node у меня

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

Однако на странице я получаю

var current_user = [object Object]

и если я пишу

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

Получаю:

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

Есть ли способ передать JSON, который будет JS читаемым?

4b9b3361

Ответ 1

О, это было легко, не используйте <%=, используйте <%-. Например:

 <%- JSON.stringify(user) %>

Первый будет отображаться в HTML, второй будет отображать переменные (как они есть, eval)

Ответ 2

Внимание!

Если пользователь может быть создан через вызовы API, <% - оставит вас с серьезной уязвимостью XSS. Возможные решения можно найти здесь:

Передать переменные JavaScript в ExpressJS