Go 的 HTML 输出解释问题解释
在 Go 中,通过 HTTP 发送 HTML 输出有时会导致输出被解释为纯文本。当响应缺少指定内容类型的适当标头时,就会发生这种情况。
请考虑以下代码:
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 base.html 包含以下内容:
base.html
加载所提供的页面时,您会发现 HTML 是逐字显示的,而不是渲染的。这是因为响应缺少 Content-Type 标头,应将其设置为 text/html。
要解决此问题,您需要在执行模板之前添加以下行:
w.Header().Set("Content-Type", "text/html")
此标头通知浏览器响应包含 HTML 内容,允许其渲染 HTML 因此。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3