Go では、テンプレートの実行を介して HTML コメントをレンダリングすることがよく想定されていますが、更新されますGo バージョンに変更すると、出力で HTML コメントが予期せず除外される可能性があります。この記事では、この問題を調査し、template.HTML タイプを使用した解決策を提供します。
Go の text/template パッケージを使用して HTML をレンダリングする場合、HTML通常、コメントはクロスサイト スクリプティング (XSS) 攻撃を防ぐためにエスケープされます。ただし、特定の状況では、適切な機能のためにこれらのコメントを保持することが望ましい場合があります。
解決策は、template.HTML タイプを使用してマークを付けることです。 HTML コメントはエスケープの対象から除外されます。実装方法は次のとおりです:
カスタム関数の登録:
文字列を受け入れてテンプレートとして返す、テンプレートのカスタム関数を定義します。 .HTML。この関数は、渡された文字列のエスケープを防ぎます。
HTML コメントの変換:
HTML コメントを、カスタム関数。元のコメントを引数として渡します。
例:
const src = `
{{safe ""}}
Some HTML content
`
このテンプレート変換により、レンダリング中に HTML コメントが省略されたりエスケープされたりすることがなくなります。 .
注意事項
- HTML コメント内の引用符 ('"') はエスケープしてください。
- 条件付き HTML コメントは使用しないでください。この点の詳細については、ドキュメントを参照してください。
以上がGo テンプレートの実行後に HTML コメントが消えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。