我正在編寫一個簡單的服務(wù)器作為一個項(xiàng)目來幫助我學(xué)習(xí) 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)}當(dāng)客戶端連接到localhost:1234. 但出于某種原因,我的瀏覽器根據(jù)需要將輸出顯示為文本而不是 HTML。我究竟做錯了什么?
2 回答

呼喚遠(yuǎn)方
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個贊
如果您將在任何 chrome 檢查器替代品中打開您的頁面,您將看到它具有:
Content-Type:text/plain; charset=utf-8
這告訴您的瀏覽器如何解釋它。您可以發(fā)送指定內(nèi)容類型的附加標(biāo)頭:w.Header().Set("Content-Type", "text/html")
或者只是刪除您GET ...
留下的所有內(nèi)容:
text := "<h1>page</h1><span>page2</span>"

qq_遁去的一_1
TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個贊
在編寫響應(yīng)之前,您需要在 中設(shè)置正確的Content-Type
標(biāo)頭ResponseWriter
。您不需要發(fā)送 HTTP 標(biāo)頭,因?yàn)樗窃诘谝淮握{(diào)用時隱式發(fā)送的Write
,或者通過 顯式發(fā)送WriterHeader
。
w.Header().Set("Content-Type", "text/html; charset=utf-8")
- 2 回答
- 0 關(guān)注
- 185 瀏覽
添加回答
舉報
0/150
提交
取消