web-dev-qa-db-ja.com

Expressとejs <%=はJSONをレンダリングします

私のindex.ejsには次のコードがあります:

var current_user = <%= user %>

私のノードには

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;:...

JS読み込み可能になるJSONを渡す方法はありますか?

69
piggyback

ああ、それは簡単でした。<%=、 つかいます <%-代わりに。例えば:

 <%- JSON.stringify(user) %>

最初のものはHTMLでレンダリングし、2番目のものは変数をレンダリングします(そのままで、eval)

171
piggyback

注意!

API呼び出しを介してユーザーを作成できる場合、<%-は重大なXSS脆弱性を残します。可能な解決策は次の場所にあります。

ExpressJSでJavaScriptに変数を渡す

4
user732456