URLを使ってHTMLテンプレートをレンダリングしようとしています。問題はURLにcontains()が含まれていて、それらの文字がエスケープされていることです。htmlテンプレートの自動エスケープを避ける
私はtemplate.URL("http://myurl.com/(data)/aaa.jpg")
ともtemplate.HTML("http://myurl.com/(data)/aaa.jpg")
を使用しようとしましたが、それはまだブラケットを逃れます。
私はgin gonicを使用しています。
router.GET("/test", func(c *gin.Context) {
c.HTML(http.StatusOK, "test.tmpl", gin.H{
"url": template.URL("http://myurl.com/(data)/aaa.jpg"),
// "url": template.HTML("http://myurl.com/(data)/aaa.jpg"),
})
テンプレートファイル:
<div>
<img src="{{.url}}" />
</div>
最終出力に含ま:
<div>
<img src="http://myurl.com/%28data%29/aaa.jpg"/>
</div>
http:// myurl.com /%28data%29/aaa.jpgはアクセスできず、404は応答できません。http://myurl.com/(data)/ aaa.jpgはjpgを表示しますファイル。 –
あなたのテストはうまくいくが、イメージは '/(data)/ aaa.jpg'に送られる。しかし、URL全体を(CDNのものであるため)テンプレートに渡す必要があります。そして、不思議なことに、 '%28'と'%29'は '('と ')'として理解できません... –
@Jérômehtmlページには2つのイメージがあり、2番目にはソース属性 'src =" http: //localhost:8080/%28data%29/aaa.jpg "(つまりカッコがエンコードされている)、これも機能し、2番目の画像も表示されます。 – icza