首页 > web前端 > js教程 > 如何在 JavaScript 中安全地使用 Flask Jinja 模板中的 JSON 数据?

如何在 JavaScript 中安全地使用 Flask Jinja 模板中的 JSON 数据?

Patricia Arquette
发布: 2024-12-13 06:10:11
原创
910 人浏览过

How to Safely Use JSON Data from Flask's Jinja Templates in JavaScript?

如何通过 JavaScript 使用 Jinja 模板中渲染的 JSON 数据

在 Flask 中,当将数据从路由传递到 Jinja 模板时,自动启用转义以防止安全漏洞。但是,当尝试在 JavaScript 中将数据用作 JSON 时,这可能会导致问题。

SyntaxError: Unexpected Token '&'

当尝试使用渲染的数据时JSON.parse时,出现错误“SyntaxError: Unexpected token '&'”,因为Jinja转义了

使用 tojson 过滤器

为了解决这个问题,Flask 提供了 tojson 过滤器,它可以安全地将数据转储为 JSON 并将其标记为安全渲染:

return render_template('tree.html', tree=tree)
登录后复制
登录后复制
<script>var tree = {{ tree|tojson }};</script>
登录后复制

以前的 Flask 行为和安全Filter

旧版本的 Flask 没有将转储的数据标记为安全,因此使用了以下方法:

<script>var tree = {{ tree|tojson|safe }};</script>
登录后复制

但是,这不再是必要的。

没有 JSON 的替代方法

如果你没有通过将数据传递给 JavaScript,但在 Jinja 中使用它,您可以传递原始 Python 数据,而无需调用 tojson:

return render_template('tree.html', tree=tree)
登录后复制
登录后复制
{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}
登录后复制

其他选项

  • 安全过滤器: 将数据标记为安全渲染,无需
  • 标记包装器: 将字符串包装在标记中,以达到与安全过滤器相同的效果。

以上是如何在 JavaScript 中安全地使用 Flask Jinja 模板中的 JSON 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板