Go テンプレートでの HTML と JSON のエスケープ
Go テンプレートでは、意図しないエスケープを防ぐために HTML と JSON を適切に処理することが不可欠です。次のテンプレートを考えてみましょう:
{{ .SomeOtherHTML }}
出力が単純な
<the_other_html/<
HTML エスケープの解決策
これを防ぐには、HTML コードを文字列ではなく template.HTML タイプとして渡す必要があります。 template.HTML は、コンテンツをエスケープしないように Go に指示する特別なタイプです。例:
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)
JSON エスケープの解決策
JSON をレンダリングする必要がある場合は、json を使用する必要があります。マーシャル関数を使用してバイト配列に変換します。これにより、Go が JSON コンテンツをエスケープするのを防ぎます。例:
jsonBytes, _ := json.Marshal(data)
outputString := string(jsonBytes)
これらのベスト プラクティスに従うことで、Go テンプレートで HTML と JSON を適切にエスケープすることができ、意図しない変更が加えられることなく目的の出力が得られます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3