为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Golang 在 html 模板 (html/template) 中注入

如何使用 Golang 在 html 模板 (html/template) 中注入

Go
一只甜甜圈 2023-02-14 18:17:25
有没有办法在 Golang html 模板 ( ) 中将 Javascript 作为变量注入html/template。我期待脚本被注入到模板中,但是脚本被作为字符串注入到".模板.html...<head>    {{ .myScript }}</head>...解析器.go    ...    fp := path.Join("dir", "shop_template.html")    tmpl, err := template.ParseFiles(fp)    if err != nil {        return err    }        return tmpl.Execute(writer, myObject{Script: "<script>console.log('Hello World!');</script>"})    ...呈现的 html 输出:...<head>    "<script>console.log('Hello World!');</script>"</head>...预期产出<head>    <script>console.log('Hello World!');</script>   // And should log Hello World! in the console.</head>
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

假设您使用的是 html/template 包,这是预期的行为。常规字符串不应该能够注入 HTML/JS 代码。


如果您信任内容,您可以使用template.JS或template.HTML类型注入 JS 和 HTML 代码。


return tmpl.Execute(writer, myObject{

  Script: template.HTML("<script>console.log('Hello World!');</script>")})

当然,你需要声明:


type myObject struct {

   Script template.HTML

   ...

}

而不是string.


查看完整回答
反对 回复 2023-02-14
  • 1 回答
  • 0 关注
  • 255 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信