ホームページ >バックエンド開発 >Golang >Go HTML テンプレートに「ZgotmplZ」が表示されるのはなぜですか? どうすれば修正できますか?

Go HTML テンプレートに「ZgotmplZ」が表示されるのはなぜですか? どうすれば修正できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-16 05:44:09700ブラウズ

Why Does

Go HTML テンプレートでの "ZgotmplZ" 出力の解決

Go テンプレート関数が HTML を出力すると、予期せぬ "ZgotmplZ" が発生する可能性があります。この固有の値は、実行時に CSS または URL コンテキスト内に安全でないコンテンツが存在することを示します。

原因と解決策

「ZgotmplZ」は、生の潜在的に危険なデータが CSS または URL に誤って入力されたことを示しますコンテクスト。これを解決するには、safe 関数と attr 関数をテンプレートの funcMap に追加する必要があります。これらの関数は、それぞれデータを安全な HTML と HTML 属性に変換します。

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>`,
    })
}

出力

この修正されたコードは、目的の出力を生成します:

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

カスタマイズ

開発者は、文字列を次のような他の HTML セーフな型に変換できる追加関数を定義することを選択できます。 template.CSS、template.JS、template.JSStr、および template.URL.

以上がGo HTML テンプレートに「ZgotmplZ」が表示されるのはなぜですか? どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。