ホームページ > バックエンド開発 > Golang > テンプレート内の「/」をエスケープする

テンプレート内の「/」をエスケープする

WBOY
リリース: 2024-02-06 09:45:08
転載
1150 人が閲覧しました

テンプレート内の「/」をエスケープする

質問内容

「avatars/avatar.png」のような文字列を渡したいのですが、テンプレートに渡すと文字が入ってしまいます逃げる。 そこで、テンプレートに渡される関数を書きました:

リーリー

しかし、依然として「未定義関数 'unescape'」が表示されます。アンエスケープは定義されていないのでしょうか?

「net/url」がインポートされました。


#正解


unescapeが定義されていませんか?

技術的にはいいえ。あなたはそれを定義しましたが、

遅すぎました。関数が定義されているかどうかは、実行中ではなく、解析中にチェックされます。 parseglob があり、それから tpl.func(...) を実行します。それは普通ではありません。

代わりに次のようにしてください:

リーリー

エスケープは

安全な 機能であり、その発生はデータを使用している コンテキスト および unescape# # に依存することに注意してください。 # エスケープは unescape の入力ではなく 出力 で行われるため、おそらく「ごまかし」を回避するのには役立ちません。 つまり、

{{unescape .}}

を実行すると、パーサーはコンテキストに応じて {{unescape . | urlescaper}} に変換する可能性があります (urlescaper は内部エスケープ関数です)。これを回避するには、テンプレート内で 既知の安全な文字列 をそのまま使用する場合は、unescape の代わりに input string を使用する必要があります。

プレイグラウンドの例

を参照してください。 コンテキスト、エスケープ、文字列の入力などの詳細については、

パッケージのドキュメント

を参照してください。すべてが明確に説明されています。

以上がテンプレート内の「/」をエスケープするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート