Go テンプレートでの HTML と JSON のエスケープ
Go テンプレートでは、HTML と JSON を適切に処理して、意図しないエスケープを防ぐことが不可欠です。次のテンプレートを考えてみましょう。
<some_html> {{ .SomeOtherHTML }} </some_html>
出力が単に
<some_html> <the_other_html/< </some_html>
HTML エスケープの解決策
これを防ぐには、HTML コードをテンプレートとして渡す必要があります。文字列ではなく HTML タイプ。 template.HTML は、コンテンツをエスケープしないように Go に指示する特別なタイプです。例:
<code class="go">tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}{{.String}}{{end}}`)) tplVars := map[string]interface{} { "Html": template.HTML("<p>Paragraph</p>"), "String": "<p>Paragraph</p>", } tpl.ExecuteTemplate(os.Stdout, "T", tplVars)</code>
JSON エスケープの解決策
JSON をレンダリングする必要がある場合は、json.Marshal 関数を使用してバイトに変換する必要があります。配列。これにより、Go が JSON コンテンツをエスケープするのを防ぎます。例:
<code class="go">jsonBytes, _ := json.Marshal(data) outputString := string(jsonBytes)</code>
これらのベスト プラクティスに従うことで、Go テンプレートで HTML と JSON を適切にエスケープすることができ、意図しない変更が加えられることなく目的の出力が得られます。
以上がGo テンプレートでの HTML と JSON の意図しないエスケープを回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。