编辑:为了将来参考,我使用非xhtml内容类型定义 <!html>
我正在使用Django创建一个网站,我正在尝试在我的页面中嵌入任意json数据以供客户端javascript代码使用.
让我们说我的json对象是{"foo": "</script>"}.如果我直接嵌入,
<script type='text/javascript'>JSON={"foo": "</script>"};</script>
Run Code Online (Sandbox Code Playgroud)
第一个关闭json对象.(另外,它会使站点容易受到XSS的攻击,因为这个json对象将被动态生成).
如果我使用django的HTML转义函数,结果输出是:
<script type='text/javascript'>JSON={"foo": "</script>"};</script>
Run Code Online (Sandbox Code Playgroud)
并且浏览器无法解释<script>标记.
我在这里的问题是,
除了我使用nunjucks作为模板引擎之外,这与此问题基本相同.
我使用express的render方法将变量传递给nunjucks模板:
res.render('template.html', {myObject:myObject})
Run Code Online (Sandbox Code Playgroud)
我想在我的客户端javascript中访问它.到目前为止,我想出的唯一方法是将它放在一个不可见的HTML元素中,并从那里将其拉入javascript:
<span id='local-variable' style="display:none">{{ myObject.name }}</span>
<script>
var myObjectName = $('#local-variable').text();
</script>
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?