Heim > Web-Frontend > js-Tutorial > Wie verwende ich JSON-Daten aus den Jinja-Vorlagen von Flask sicher in JavaScript?

Wie verwende ich JSON-Daten aus den Jinja-Vorlagen von Flask sicher in JavaScript?

Patricia Arquette
Freigeben: 2024-12-13 06:10:11
Original
910 Leute haben es durchsucht

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

So verwenden Sie in Jinja-Vorlagen gerenderte JSON-Daten mit JavaScript

In Flask, wenn Daten von einer Route an eine Jinja-Vorlage übergeben werden, automatisch Escape ist aktiviert, um Sicherheitslücken zu vermeiden. Dies kann jedoch zu Problemen führen, wenn versucht wird, die Daten als JSON in JavaScript zu verwenden.

SyntaxError: Unexpected Token '&'

Beim Versuch, die gerenderten Daten mit zu verwenden JSON.parse, der Fehler „SyntaxError: Unexpected token '&'“ tritt auf, weil Jinja das Zeichen „&“ in der Datei maskiert Ausgabe.

Verwenden des tojson-Filters

Um dieses Problem zu beheben, stellt Flask den tojson-Filter bereit, der die Daten sicher als JSON ablegt und sie als sicher zum Rendern markiert:

return render_template('tree.html', tree=tree)
Nach dem Login kopieren
Nach dem Login kopieren
<script>var tree = {{ tree|tojson }};</script>
Nach dem Login kopieren

Vorheriges Flaschenverhalten und sicher Filter

Ältere Versionen von Flask haben die ausgegebenen Daten nicht als sicher markiert, daher wurde der folgende Ansatz verwendet:

<script>var tree = {{ tree|tojson|safe }};</script>
Nach dem Login kopieren

Dies ist jedoch nicht mehr erforderlich.

Alternativer Ansatz ohne JSON

Wenn Sie die Daten nicht an JavaScript übergeben, sondern verwenden Wenn Sie es in Jinja verwenden, können Sie die ursprünglichen Python-Daten übergeben, ohne tojson aufzurufen:

return render_template('tree.html', tree=tree)
Nach dem Login kopieren
Nach dem Login kopieren
{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}
Nach dem Login kopieren

Andere Optionen

  • sicherer Filter: Markiert die Daten als sicher zum Rendern ohne Escape.
  • Markup Wrapper: Wickelt die Zeichenfolge in Markup ein, um den gleichen Effekt wie der sichere Filter zu erzielen.

Das obige ist der detaillierte Inhalt vonWie verwende ich JSON-Daten aus den Jinja-Vorlagen von Flask sicher in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage