我正在使用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在网络浏览器中工作,而不仅是使用命令行卷曲? 期待您的帮助。 马可
答案 0 :(得分:1)
您的服务器侦听的IP地址是localhost
,因此它仅处理对localhost
的请求。
您可以尝试curl http://111.111.1.1:8080/
,也会失败。
如果要从lan或任何其他IP访问服务器,则应设置CONN_HOST = "111.111.1.1"。