gpt4 book ai didi

node.js - 在 node/express + ejs 中将对象传递给客户端?

转载 作者:IT老高 更新时间:2023-10-28 22:02:28 26 4
gpt4 key购买 nike

我有一个非常大的对象,我需要将它传递给客户端脚本中的函数。我曾尝试使用 JSON.stringify,但在使用这种方法时遇到了一些问题——主要与性能有关。在ejs中可以做这样的事情吗?

app.get('/load', function(req, res) {
var data = {
layout:'interview/load',
locals: {
interview: '',
data: someLargeObj
}
};
res.render('load', data);
});

在我的客户端脚本中,我会将这个对象传递给这样的函数

<script type="text/javascript">
load(<%- data %>); // load is a function in a client script
</script>

当我尝试这个时,我得到了任何一个

<script type="text/javascript">
load();
</script>

<script type="text/javascript">
load([Object object]);
</script>

最佳答案

在 Node.js 中:

res.render('mytemplate', {data: myobject});

在 EJS 中:

<script type='text/javascript'>
var rows =<%-JSON.stringify(data)%>
</script>

安全提示:不要使用它来渲染带有用户提供数据的对象。像 Little Bobby Tables 这样的人是可能的包括一个打破 JSON 字符串并启动可执行标记或类似的子字符串。例如,在 Node.js 中,这看起来很无辜……

var data = {"color": client.favorite_color}

但如果用户输入以下颜色,可能会导致客户端提供的脚本在用户的浏览器中执行:

"titanium </script><script>alert('pwnd!')</script> oxide"

如果您需要包含用户提供的内容,请参阅 https://stackoverflow.com/a/37920555/645715使用 Base64 编码获得更好的答案

关于node.js - 在 node/express + ejs 中将对象传递给客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11151632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com