当 Go 模板函数输出 HTML 时,可能会出现“ZgotmplZ”的意外出现。此特殊值表示运行时 CSS 或 URL 上下文中存在不安全内容。
“ZgotmplZ”表示原始的、具有潜在危险的数据已错误地输入 CSS 或 URL语境。为了解决这个问题,必须将 safe 和 attr 函数添加到模板的 funcMap 中。这些函数分别将数据转换为安全的 HTML 和 HTML 属性。
package main import ( "html/template" "os" ) func main() { funcMap := template.FuncMap{ "attr": func(s string) template.HTMLAttr { return template.HTMLAttr(s) }, "safe": func(s string) template.HTML { return template.HTML(s) }, } template.Must(template.New("Template").Funcs(funcMap).Parse(` <option {{.attr | attr}}>>test</option> {{.html | safe}} `)).Execute(os.Stdout, map[string]string{ "attr": `selected="selected"`, "html": `<option selected="selected">test</option>`, }) }
此更正后的代码将生成所需的输出:
<option selected="selected">test</option> <option selected="selected">test</option>
开发人员可以选择定义其他函数,将字符串转换为其他 HTML 安全类型,例如 template.CSS、template.JS、 template.JSStr 和 template.URL。
以上是为什么'ZgotmplZ”出现在我的 Go HTML 模板中,如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!