首頁 > 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行為與安全F​​ilter

舊版的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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板