登录
首页 >  Golang >  Go问答

转到 html/template 并转义

来源:stackoverflow

时间:2024-04-23 14:36:34 153浏览 收藏

一分耕耘,一分收获!既然都打开这篇《转到 html/template 并转义》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

根据 html/template 文档中的示例,我不能说我完全理解为什么在我的实验中似乎不一致地转义小于和大于: https://golang.org/pkg/html/template/#hdr-introduction

这是否需要错误报告?由于我对 go 还比较陌生,所以我推迟了。

$ go version
go version go1.16 linux/amd64

我在 go1.15.8 中看到了类似的行为。

package main

import (
        htmltemplate "html/template"
        "os"
        texttemplate "text/template"
)

type myvars struct {
        flavor string
}

func main() {
        vars := myvars{
                flavor: "#####   html   #####",
        }

        htmltmpl, _ := htmltemplate.parsefiles("index.html")
        htmltmpl.execute(os.stdout, vars)

        vars = myvars{
                flavor: "#####   text   #####",
        }

        texttmpl, _ := texttemplate.parsefiles("index.html")
        texttmpl.execute(os.stdout, vars)
}
$ cat index.html
{{ .flavor }}

< span >hello< /span >
hello
{{ "<" }}span{{ ">" }}hello{{ "<" }}/span{{ ">" }}
$ ./experiment                                                                                                                                                                                                    
#####   html   #####
<?xml version="1.0" encoding="UTF-8" standalone="no"?> # Why is only < escaped?
< span >Hello< /span >                              # Why is only < escaped?
Hello                                        # Why is neither < nor > escaped?
<span>Hello</span>
#####   text   #####

< span >Hello< /span >
Hello
Hello

解决方案


1: {{ .Flavor }}
2: 
3: < span >Hello< /span >
4: Hello
5: {{ "<" }}span{{ ">" }}Hello{{ "<" }}/span{{ ">" }}

第 2 行和第 3 行的 < 是文本。 html 模板包在文本中对 < 进行转义,以防止文档阅读器将 < 误解为标记的开头。

第 2 行和第 3 行的 > 按原样写入输出。转义 > 没有任何安全好处。

第 4 行的 <> 是标记的一部分。标签不会被转义。

第 5 行的 <> 是表达式的值。 html模板包完全转义表达式结果。

理论要掌握,实操不能落!以上关于《转到 html/template 并转义》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>