首页  >  文章  >  后端开发  >  为什么我的 Go HTML 输出显示为纯文本?

为什么我的 Go HTML 输出显示为纯文本?

DDD
DDD原创
2024-10-29 20:39:29437浏览

Why is My Go HTML Output Displayed as Plain Text?

Go 的 HTML 输出解释问题解释

在 Go 中,通过 HTTP 发送 HTML 输出有时会导致输出被解释为纯文本。当响应缺少指定内容类型的适当标头时,就会发生这种情况。

考虑以下代码:

<code class="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 包含以下内容:

<code class="html"><DOCTYPE html>
<html>
    <body>
        base.html
    </body>
</html></code>

当您加载所提供的页面时,您会发现 HTML 是逐字显示的,而不是渲染的。这是因为响应缺少 Content-Type 标头,应将其设置为 text/html。

要解决此问题,您需要在执行模板之前添加以下行:

<code class="go">w.Header().Set("Content-Type", "text/html")</code>

此标头通知浏览器响应包含 HTML 内容,从而允许浏览器相应地呈现 HTML。

以上是为什么我的 Go HTML 输出显示为纯文本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn