Golang html输出被解释为纯文本而不是作为html接收

mee*_*son 4 html templates plaintext go

我确定这只是我正在做的事情,但我是Go的新手,所以不确定这里发生了什么.我有以下基本设置.

requestHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    t := template.New("test")
    t, _ := template.ParseFiles("base.html")
    t.Execute(w, "")
})

server := &http.Server{
    Addr:           ":9999",
    Handler:        requestHandler,
    ReadTimeout:    10 * time.Second,
    WriteTimeout:   10 * time.Second,
    MaxHeaderBytes: 1 << 20,
}

log.Fatal(server.ListenAndServe())
Run Code Online (Sandbox Code Playgroud)

base.html的内容如下:

<DOCTYPE html>
<html>
    <body>
        base.html
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我运行服务器并加载页面时,我会逐字地看到模板中的HTML - 而不是解释版本.事实证明,模板被包装在标签中,随后被包装在新文档中.

发生什么了?为什么默认情况下将其视为纯文本而不是将其作为html发送,以便浏览器可以正确呈现它?当然这肯定是一个简单的误解,但在搜索中没有得到任何东西.想法?

fab*_*ioM 8

您需要添加Content-Type标头

 w.Header().Set("Content-Type", "text/html")
Run Code Online (Sandbox Code Playgroud)

  • 你实际上不需要这样做(它只是有用):Go和/或你的浏览器会为你推断.OP在他的doctype声明中缺少一个`!`,这就是为什么它呈现为纯文本:`<!DOCTYPE html>` (6认同)