我正在编写一个简单的服务器作为一个项目来帮助我学习 Go。这是它的最小形式:package mainimport ( "io" "net/http")func serve(w http.ResponseWriter, r *http.Request) { text := "HTTP/1.1 200 OK\r\n" + "Content-Type: text/html\r\n" + "Host: localhost:1234\r\n" + "Connection: close\r\n" + "\r\n" + "<!doctype html>\r\n" + "<html>...</html>\r\n" // Greet the user, ignoring their request. io.WriteString(w, text)}func main() { http.HandleFunc("/", serve) http.ListenAndServe(":1234", nil)}当客户端连接到localhost:1234. 但出于某种原因,我的浏览器根据需要将输出显示为文本而不是 HTML。我究竟做错了什么?
2 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
如果您将在任何 chrome 检查器替代品中打开您的页面,您将看到它具有:
Content-Type:text/plain; charset=utf-8
这告诉您的浏览器如何解释它。您可以发送指定内容类型的附加标头:w.Header().Set("Content-Type", "text/html")
或者只是删除您GET ...
留下的所有内容:
text := "<h1>page</h1><span>page2</span>"
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
在编写响应之前,您需要在 中设置正确的Content-Type
标头ResponseWriter
。您不需要发送 HTTP 标头,因为它是在第一次调用时隐式发送的Write
,或者通过 显式发送WriterHeader
。
w.Header().Set("Content-Type", "text/html; charset=utf-8")
- 2 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消