テンプレートが予期せずエスケープする
ユーザーが開発ツールのテンプレートで問題を検出しました。安全な HTML 埋め込みのためにデータを自動的にエスケープする HTML テンプレートを使用しているにもかかわらず、文字 > > が存在しないことが観察されました。文字
説明
Go の html/template パッケージの HTML テンプレートは、HTML 出力を生成するために特別に設計されています。これらは、コンテキストに依存した自動エンコードを提供し、データ値が HTML ドキュメント内に安全に埋め込まれることを保証します。このエンコーディングは、悪意のあるユーザーが安全でないコードを出力に挿入することを防ぎます。ただし、テキスト/テンプレート パッケージにはこのエンコード機能がなく、データ値をプレーン テキストとしてのみ解釈します。
この場合、ユーザーは非 HTML 出力 (おそらく Pawn スクリプト) を生成することを意図しているため、テキストを使用します。 /template パッケージの方が適切でしょう。 html/template パッケージが < を不必要にエスケープしていました。これは、出力が HTML に埋め込まれることが期待されていたためですが、そうではありませんでした。
解決策
この問題を解決するには、ユーザーは text/ に切り替える必要があります。非 HTML 出力を生成する場合はテンプレート パッケージを使用します。これにより、自動エンコードが無効になり、< を含むすべての文字が正しく表示されるようになります。そして >.
以上が「'>」が正しく表示されているにもかかわらず、HTML テンプレートで「<」が「<」にエスケープされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。