获取一个简单的服务器来显示网页

我正在编写一个简单的服务器作为一个项目来帮助我学习 Go。这是它的最小形式:


package main


import (

    "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。我究竟做错了什么?


不负相思意
浏览 133回答 2
2回答

呼唤远方

如果您将在任何 chrome 检查器替代品中打开您的页面,您将看到它具有:Content-Type:text/plain; charset=utf-8这告诉您的浏览器如何解释它。您可以发送指定内容类型的附加标头:w.Header().Set("Content-Type", "text/html")或者只是删除您GET ...留下的所有内容:text&nbsp;:=&nbsp;"<h1>page</h1><span>page2</span>"

qq_遁去的一_1

在编写响应之前,您需要在 中设置正确的Content-Type标头ResponseWriter。您不需要发送 HTTP 标头,因为它是在第一次调用时隐式发送的Write,或者通过 显式发送WriterHeader。w.Header().Set("Content-Type",&nbsp;"text/html;&nbsp;charset=utf-8")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go