diff --git a/zh/04.3.md b/zh/04.3.md index e0c350e2..42c458ee 100644 --- a/zh/04.3.md +++ b/zh/04.3.md @@ -14,11 +14,12 @@ 我们看4.1小节的例子 +```Go fmt.Println("username:", template.HTMLEscapeString(r.Form.Get("username"))) //输出到服务器端 fmt.Println("password:", template.HTMLEscapeString(r.Form.Get("password"))) template.HTMLEscape(w, []byte(r.Form.Get("username"))) //输出到客户端 - +``` 如果我们输入的username是``,那么我们可以在浏览器上面看到输出如下所示: ![](images/4.3.escape.png?raw=true) @@ -26,23 +27,25 @@ 图4.3 Javascript过滤之后的输出 Go的html/template包默认帮你过滤了html标签,但是有时候你只想要输出这个``看起来正常的信息,该怎么处理?请使用text/template。请看下面的例子: +```Go import "text/template" ... t, err := template.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`) err = t.ExecuteTemplate(out, "T", "") - +``` 输出 Hello, ! 或者使用template.HTML类型 +```Go import "html/template" ... t, err := template.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`) err = t.ExecuteTemplate(out, "T", template.HTML("")) - +``` 输出 Hello, ! @@ -50,12 +53,13 @@ Go的html/template包默认帮你过滤了html标签,但是有时候你只想 转换成`template.HTML`后,变量的内容也不会被转义 转义的例子: +```Go import "html/template" ... t, err := template.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`) err = t.ExecuteTemplate(out, "T", "") - +``` 转义之后的输出: Hello, <script>alert('you have been pwned')</script>!