Maison > interface Web > js tutoriel > Comment utiliser en toute sécurité les données JSON des modèles Jinja de Flask en JavaScript ?

Comment utiliser en toute sécurité les données JSON des modèles Jinja de Flask en JavaScript ?

Patricia Arquette
Libérer: 2024-12-13 06:10:11
original
910 Les gens l'ont consulté

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

Comment utiliser les données JSON rendues dans les modèles Jinja avec JavaScript

Dans Flask, lors du transfert de données d'un itinéraire vers un modèle Jinja, automatique l'échappement est activé pour éviter les failles de sécurité. Cependant, cela peut entraîner des problèmes lors de la tentative d'utilisation des données au format JSON dans JavaScript.

SyntaxError : Unexpected Token '&'

Lorsque vous essayez d'utiliser les données rendues avec JSON.parse, l'erreur "SyntaxError: Unexpected token '&'" se produit car Jinja échappe au caractère "&" dans le sortie.

Utilisation du filtre tojson

Pour résoudre ce problème, Flask fournit le filtre tojson qui vide en toute sécurité les données au format JSON et les marque comme sûres pour le rendu :

return render_template('tree.html', tree=tree)
Copier après la connexion
Copier après la connexion
<script>var tree = {{ tree|tojson }};</script>
Copier après la connexion

Comportement du flacon précédent et sécurité Filtre

Les anciennes versions de Flask ne marquaient pas les données sauvegardées comme sûres, l'approche suivante a donc été utilisée :

<script>var tree = {{ tree|tojson|safe }};</script>
Copier après la connexion

Cependant, cela n'est plus nécessaire.

Approche alternative sans JSON

Si vous ne transmettez pas les données à JavaScript mais que vous les utilisez dans Jinja, vous pouvez transmettre les données Python d'origine sans appeler tojson :

return render_template('tree.html', tree=tree)
Copier après la connexion
Copier après la connexion
{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}
Copier après la connexion

Autres options

  • Filtre sécurisé : Marque les données comme sûres pour le rendu sans s'échapper.
  • Marquage Wrapper : Enveloppe la chaîne dans Markup pour obtenir le même effet que le filtre sécurisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal