可以卷曲http服务器,但不能使用浏览器

时间:2019-01-25 15:40:24

标签: go web-applications ubuntu-18.04 simplehttpserver

我正在使用Golang访问Web应用。

这是简单的代码作为起点:

package main

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

const (
        CONN_HOST = "localhost"
        CONN_PORT = "8080"
)

func helloWorld(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello World!")
}

func main() {
        http.HandleFunc("/", helloWorld)
        err := http.ListenAndServe(CONN_HOST+":"+CONN_PORT, nil)
        if err != nil {
                log.Fatal("error starting http server : ", err)
                return
        }
}

执行中:

go run http-server.go

curl http://localhost:8080/
Hello World!

但是在Web浏览器中打开ip地址时:

http://111.111.1.1:8080/
connection didn't succeed

如果我替换这段代码:

        err := http.ListenAndServe(CONN_HOST+":"+CONN_PORT, nil)
        if err != nil {
                log.Fatal("error starting http server : ", err)
                return
        }

与:

         log.Fatal(http.ListenAndServe(":8080", nil))

所以main()函数仅由以下两行组成:

    func main() {
        http.HandleFunc("/", helloWorld)
    }

curl http://localhost:8080/
Hello World!

在网络浏览器中:

http://111.111.1.1:8080/

Hello World!

所以...。如何使原始的简单http-server.go在网络浏览器中工作,而不仅是使用命令行卷曲? 期待您的帮助。 马可

1 个答案:

答案 0 :(得分:1)

您的服务器侦听的IP地址是localhost,因此它仅处理对localhost的请求。

您可以尝试curl http://111.111.1.1:8080/,也会失败。

如果要从lan或任何其他IP访问服务器,则应设置CONN_HOST = "111.111.1.1"。