Golang Go语言中 html/template 过滤 script 里的注释?
Golang Go语言中 html/template 过滤 script 里的注释?
代码是这样的:
输出是这样的:
https 后面的 //被截没了?
我之前见过这个标准库过滤<!---->
的注释,这 js 里的注释也会处理掉?还处理错了位置?
我肯定是跟这个库有什么误会。。。
更多关于Golang Go语言中 html/template 过滤 script 里的注释?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
发个最小 Demo 的 Code 上来看看?
更多关于Golang Go语言中 html/template 过滤 script 里的注释?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
有点想笑。。
试着//转一下?
我的经验是, 当怀疑语言本身 /标准库 /操作系统 /计算机有 BUG 的时候, 99.9% 是自己的代码有 BUG…
为啥要在 html 里直接写 js。
html 和 js 视乎是分开处理。
字符串转义
https://play.golang.org/p/2F-FbNXWSko 根本就不会。
几行代码就能验证的事情。你的判断是错误的。
不过字符串外面的注释确实会过滤掉,可能旧版本有 bug 也不奇怪,升级到 1.14 试试
#1
#4 Code 上了
#3 输出结果变成 https://api.ip.sb/geoip 也不是预期
#6 确实昨晚上分成两个文件规避了,但是这个现象依旧很困惑
你给出的 demo 无法复现
url 编码一下
你引入的 cdn 有没有被修改掉?
直接调用 html/template 无法复现
你给出的 demo 无法复现
在Go语言的html/template
包中,直接过滤HTML内容中的JavaScript注释并不是其设计的主要功能。html/template
主要用于安全地生成HTML内容,防止XSS攻击,它通过自动转义HTML特殊字符来确保输出内容是安全的。
然而,如果你需要处理特定的JavaScript代码,并希望去除其中的注释,这通常需要在服务器端进行预处理,而不是在模板渲染阶段。以下是一个简单的思路:
-
预处理JavaScript代码:在将数据传递给模板之前,使用正则表达式或专门的JavaScript解析库(如
goquery
结合jsdom
等,尽管这些库主要用于Node.js,Go中可能需要类似功能的第三方库或自行实现)来去除JavaScript代码中的注释。 -
使用
html/template
安全渲染:在预处理完JavaScript代码后,将其作为安全的数据传递给模板进行渲染。html/template
会确保渲染的HTML内容不会包含未转义的JavaScript代码,从而防止XSS攻击。
需要注意的是,直接处理JavaScript代码(特别是去除注释)可能会引入复杂性,特别是当遇到多行注释、字符串中的类似注释的字符序列等情况时。因此,确保你的预处理逻辑能够正确处理这些边缘情况是非常重要的。
总之,虽然html/template
本身不提供直接去除JavaScript注释的功能,但你可以通过预处理数据来实现这一需求,同时确保最终的HTML输出是安全的。