You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Golang的html/template中注入JavaScript?

在Golang html/template中注入JavaScript变量的解决方案

Go的html/template默认会对所有字符串进行HTML转义(目的是防范XSS攻击),所以你直接传入的脚本字符串会被当作普通文本处理,出现被引号包裹的情况。要实现正常注入脚本,需要明确告诉模板该内容是安全的HTML,无需转义,具体有两种方法:

方法一:修改结构体字段类型

将myObject结构体中Script字段的类型从string改为template.HTML:

import "html/template"

type myObject struct {
    Script template.HTML
}

后续传入模板时,模板会识别这是安全的HTML内容,直接渲染而不转义。

方法二:传参时转换类型

如果不想修改结构体定义,可以在传入模板执行时,把字符串手动转换为template.HTML类型:

// 结构体传参的情况
return tmpl.Execute(writer, myObject{
    Script: template.HTML("<script>console.log('Hello World!');</script>"),
})

// 或者用map传参
return tmpl.Execute(writer, map[string]interface{}{
    "myScript": template.HTML("<script>console.log('Hello World!');</script>"),
})

效果验证

修改后渲染的HTML会符合你的期望:

<head>
    <script>console.log('Hello World!');</script>
</head>

此时浏览器会正常执行脚本,控制台将输出Hello World!。

⚠️ 注意:只有当你完全信任注入的脚本内容时才使用此方法,避免传入不可信的用户输入,防止XSS安全风险。

内容的提问来源于stack exchange,提问作者Vhndaree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:41:13