Web服务器可通过curl访问,但不能通过浏览器访问

时间:2020-10-20 16:23:30

标签: go

我正在尝试在Go中构建一个简单的Web服务器。但是,启动时,只能通过curl访问响应(Hello,World!)。输入localhost:8080,127.0.0.1:8080或0.0.0.0:8080会拒绝连接(ERR_CONNECTION_REFUSED)。在地址前面添加http://似乎没有任何改变,因为前缀在尝试加载之前从网址栏中消失了。

代码如下:

package main

import (
    "fmt"
    "html"
    "net/http"
)

func ping(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("pong")) 
}

func main() {

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
    })

    http.HandleFunc("/hi", func(w http.ResponseWriter, r *http.Request){
        fmt.Fprintf(w, "Hi")
    })

    http.HandleFunc("/ping", ping)

    if err := http.ListenAndServe(":8080", nil); err != nil {
      panic(err)
    }
}

此外,netstat -tlnp的输出是:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::5000                 :::*                    LISTEN      4252/main

我已经阅读了一些答案,说没有给出原因就不要使用TCP6,但是我什至不知道如何阻止这种行为。

因此第二天再试一次,就可以了(如下所述)。现在,我开始探索为什么。如果找到有用的答案,我将再次发布,但是现在这是工作代码。谢谢StackOverflow社区!

0 个答案:

没有答案