Maison  >  Article  >  développement back-end  >  Pourquoi mes commentaires HTML disparaissent-ils après l'exécution du modèle Go ?

Pourquoi mes commentaires HTML disparaissent-ils après l'exécution du modèle Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 08:55:02533parcourir

Why Do My HTML Comments Disappear After Go Template Execution?

Go - Les commentaires HTML ne sont pas échappés après l'exécution du modèle

Dans Go, le rendu des commentaires HTML via l'exécution du modèle est souvent attendu, mais des mises à jour vers la version Go peut entraîner des exclusions inattendues de commentaires HTML dans la sortie. Cet article explore le problème et propose une solution en utilisant le type template.HTML.

Comprendre le problème

Lors du rendu HTML à l'aide du package texte/modèle de Go, HTML les commentaires sont généralement échappés pour empêcher les attaques de script intersite (XSS). Cependant, dans certaines situations, il est souhaité de conserver ces commentaires pour un bon fonctionnement.

La solution

La solution consiste à utiliser le type template.HTML pour marquer Commentaires HTML exemptés de l'échappement. Voici comment cela est implémenté :

  1. Enregistrez une fonction personnalisée :

    Définissez une fonction personnalisée pour votre modèle qui accepte une chaîne et la renvoie comme modèle .HTML. Cette fonction empêchera l'échappement de la chaîne transmise.

  2. Transformer les commentaires HTML :

    Remplacez tous les commentaires HTML par des actions de modèle qui appellent le fonction personnalisée, en passant le commentaire d'origine comme argument.

Par exemple :

<code class="go">const src = `<html><body>
{{safe "<!-- This is a comment -->"}}
<div>Some <b>HTML</b> content</div>
</body></html>`</code>

Cette transformation de modèle empêchera le commentaire HTML d'être omis ou échappé pendant le rendu .

Mises en garde

  • Évitez les guillemets (""') dans le commentaire HTML.
  • Évitez d'utiliser des commentaires HTML conditionnels comme ils peuvent perturber l'échappement contextuel du html/template. Reportez-vous à la documentation pour plus de détails sur cet aspect.
.

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!

Déclaration:
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