„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie vermeide ich unbeabsichtigtes Escapen von HTML und JSON in Go-Vorlagen?

Wie vermeide ich unbeabsichtigtes Escapen von HTML und JSON in Go-Vorlagen?

Veröffentlicht am 09.11.2024
Durchsuche:883

How to Avoid Unintended Escaping of HTML and JSON in Go Templates?

HTML und JSON in Go-Vorlagen maskieren

In Go-Vorlagen ist es wichtig, HTML und JSON ordnungsgemäß zu handhaben, um unbeabsichtigtes Escapen zu verhindern. Betrachten Sie die folgende Vorlage:

 {{ .SomeOtherHTML }} 

Wenn Sie erwarten, dass die Ausgabe einfach ist, dann sind Sie genau richtig Möglicherweise tritt das Problem auf, dass Sonderzeichen wie

 <the_other_html/< 

Lösung für HTML-Escaping

Um dies zu verhindern, sollten Sie den HTML-Code als template.HTML-Typ statt als String übergeben. template.HTML ist ein spezieller Typ, der Go anweist, seinen Inhalt nicht zu maskieren. Zum Beispiel:

tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}{{.String}}{{end}}`))
tplVars := map[string]interface{} {
    "Html": template.HTML("

Paragraph

"), "String": "

Paragraph

", } tpl.ExecuteTemplate(os.Stdout, "T", tplVars)

Lösung für JSON-Escape

Wenn Sie auch JSON rendern müssen, sollten Sie JSON verwenden. Marshal-Funktion zum Konvertieren in ein Byte-Array. Dadurch wird verhindert, dass Go dem JSON-Inhalt entgeht. Zum Beispiel:

jsonBytes, _ := json.Marshal(data)
outputString := string(jsonBytes)

Durch Befolgen dieser Best Practices können Sie sicherstellen, dass HTML und JSON in Ihren Go-Vorlagen ordnungsgemäß maskiert werden, sodass die gewünschte Ausgabe ohne unbeabsichtigte Änderungen erzielt wird.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3