Go HTML/template 会莫名吃掉一些字符?(过滤 script 里的注释?)
代码是这样的:
//Go 1.14 amd64 win10
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.Static("/assets", "./assets")
r.LoadHTMLGlob("tmpl/*")
r.GET("/test", func(ctx *gin.Context) {
ctx.HTML(http.StatusOK, "test.tmpl", map[string]interface{}{})
})
if err := r.Run(); err != nil {
panic(err)
}
}
<!-- test.tmpl -->
<!doctype html>
<html lang="zh-cn">
<head>
{{template "head"}}
</head>
<body>
{{template "foot"}}
</body>
</html>
<!-- base.tmpl -->
{{define "head"}}
<meta charset="UTF-8">
<!-- bulabula... -->
{{end}}
{{define "foot"}}
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
crossorigin="anonymous"></script>
<script type="text/javascript" src="//js.users.51.la/00000.js"></script>
<script>
if ($("#Client-IP").length > 0) {
$.ajax({
url: "https://myip.ipip.net/",
success: function (result) {}
);
$.ajax({
url: "https://api.ip.sb/geoip", # 这里就是下面图片哪里被吃的地方
success: function (result) {}
});
}
</script>
{{end}}
输出是这样的:
https 后面的 //被截没了?
我之前见过这个标准库过滤<!---->
的注释,这 js 里的注释也会处理掉?还处理错了位置?
我肯定是跟这个库有什么误会。。。
有没有相关的文档或者说明方便提供一下
可以尝试转义一下斜杠
@snowlyg 改为
url: "https:\/\/api.ip.sb/geoip",
输出url: "https:\/\/api.ip.sb/geoip",
也不是预期结果 :joy:我也是,之前正常,近来突然这样了。 你解决了么?