Heim >Backend-Entwicklung >Golang >Wie rendert man Zeilenumbrüche in HTML-Vorlagen richtig?

Wie rendert man Zeilenumbrüche in HTML-Vorlagen richtig?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 20:02:02742Durchsuche

How to Render Newlines Correctly in HTML Templates?

Überwindung des Escape-Problems in HTML/Vorlagen mit Zeilenumbrüchen

In HTML-Vorlagen werden als n codierte Zeilenumbrüche als HTML-Entitäten gerendert (< br>) statt tatsächlicher Zeilenumbrüche. Dies tritt auf, wenn die n Zeichen von der Vorlage maskiert werden, anstatt als Teil vertrauenswürdiger Daten akzeptiert zu werden.

Lösung: Bereinigung und Vorab-Escapezeichen

Um dieses Problem zu beheben, Befolgen Sie diese Schritte:

  1. Bereinigen Sie den Text:Verwenden Sie template.HTMLEscape(), um alle potenziell schädlichen Zeichen aus der Textdatei zu entfernen.
  2. Ersatz Zeilenumbrüche: Ersetzen Sie nach der Bereinigung alle Vorkommen von „n“ durch „
    “.
  3. Verwenden Sie vorab maskierte Daten: Übergeben Sie den bereinigten und ersetzten Text an die Vorlage als template.HTML, das sichere HTML-Fragmente kapselt.

Beispielimplementierung:

Der folgende Code demonstriert den Prozess:

<code class="go">package main

import (
    "html/template"
    "os"
    "strings"
)

const page = `<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <p>{{.}}</p>
  </body>
</html>`

const text = `first line
<script>dangerous</script>
last line`

func main() {
    t := template.Must(template.New("page").Parse(page))
    safe := template.HTMLEscapeString(text)
    safe = strings.Replace(safe, "\n", "<br>", -1)
    t.Execute(os.Stdout, template.HTML(safe))
}</code>

Dieser Code bereinigt den Text, ersetzt Zeilenumbrüche durch
und übergibt ihn als vorab maskierte Daten an die Vorlage. Das gerenderte Ergebnis zeigt Zeilenumbrüche korrekt und ohne Escape-Probleme an.

Das obige ist der detaillierte Inhalt vonWie rendert man Zeilenumbrüche in HTML-Vorlagen richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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