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

标签 html templates go plaintext

我确定这只是我在做的一些愚蠢的事情,但我是 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())

base.html的内容如下:

<DOCTYPE html>
<html>
    <body>
        base.html
    </body>
</html>

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

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

最佳答案

您需要添加带有 Content-Type 的 header

 w.Header().Set("Content-Type", "text/html")

关于HTML 输出被解释为纯文本而不是被接收为 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25066071/

相关文章:

css - 悬停时如何使新图像出现?

c++ - 返回模板子类

走例程:Making concurrent API requests

html - 如果设置了相邻 div 的背景颜色,则 Div 不会在相邻 div 上放置阴影

html - 如何在像 block 一样的 Bootstrap 列之间创建分隔?

javascript - d3 JS 动态 Canvas

c++ - 如何在 C++ 中限制模板参数?

html - 标签页中的分页不起作用(Blogger)

amazon-web-services - 带有 via amazonses.com 警告的 AWS SES SendRawEmail

GoLang(Jetbrains)在运行时要求提示不起作用