Heim >Backend-Entwicklung >Golang >Warum erscheint „ZgotmplZ' in meinen Go-HTML-Vorlagen und wie kann ich das Problem beheben?

Warum erscheint „ZgotmplZ' in meinen Go-HTML-Vorlagen und wie kann ich das Problem beheben?

Linda Hamilton
Linda HamiltonOriginal
2024-12-16 05:44:09698Durchsuche

Why Does

Auflösen der „ZgotmplZ“-Ausgabe in Go-HTML-Vorlagen

Wenn eine Go-Vorlagenfunktion HTML ausgibt, kann das unerwartete Erscheinen von „ZgotmplZ“ auftreten. Dieser besondere Wert weist auf das Vorhandensein unsicherer Inhalte in einem CSS- oder URL-Kontext während der Laufzeit hin.

Ursache und Lösung

„ZgotmplZ“ bedeutet, dass rohe, potenziell gefährliche Daten fälschlicherweise in ein CSS oder eine URL eingegeben wurden Kontext. Um dies zu beheben, müssen die Funktionen „safe“ und „attr“ zur funcMap der Vorlage hinzugefügt werden. Diese Funktionen konvertieren die Daten in sicheres HTML bzw. HTML-Attribute.

package main

import (
    "html/template"
    "os"
)

func main() {
    funcMap := template.FuncMap{
        "attr": func(s string) template.HTMLAttr {
            return template.HTMLAttr(s)
        },
        "safe": func(s string) template.HTML {
            return template.HTML(s)
        },
    }

    template.Must(template.New("Template").Funcs(funcMap).Parse(`
    <option {{.attr | attr}}>>test</option>
        {{.html | safe}}
     `)).Execute(os.Stdout, map[string]string{
        "attr": `selected=&quot;selected&quot;`,
        "html": `<option selected=&quot;selected&quot;>test</option>`,
    })
}

Ausgabe

Dieser korrigierte Code generiert die gewünschte Ausgabe:

<option selected=&quot;selected&quot;>test</option>
<option selected=&quot;selected&quot;>test</option>

Anpassung

Entwickler können sich dafür entscheiden, zusätzliche Funktionen zu definieren, die Strings in andere HTML-sichere Typen wie template.CSS, template.JS, konvertieren können. template.JSStr und template.URL.

Das obige ist der detaillierte Inhalt vonWarum erscheint „ZgotmplZ' in meinen Go-HTML-Vorlagen und wie kann ich das Problem beheben?. 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