Ответ 1
О, это было легко, не используйте <%=
, используйте <%-
. Например:
<%- JSON.stringify(user) %>
Первый будет отображаться в HTML, второй будет отображать переменные (как они есть, eval)
В моем 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 = {"__v":0,"_id":"50bc01938f164ee80b000001","agents":...
Есть ли способ передать JSON, который будет JS читаемым?
О, это было легко, не используйте <%=
, используйте <%-
. Например:
<%- JSON.stringify(user) %>
Первый будет отображаться в HTML, второй будет отображать переменные (как они есть, eval)
Внимание!
Если пользователь может быть создан через вызовы API, <% - оставит вас с серьезной уязвимостью XSS. Возможные решения можно найти здесь: