我在 Golang 中有一个简单的 HTTP 服务器:
h := http.NewServeMux()
h.Handle("/somepath", MyHandler)
s := &http.Server{
Addr: "1234",
Handler: h,
}
s.ListenAndServe();
在调用者不是本地主机的情况下断开连接的最佳方法是什么?目前我正在考虑检查底层连接信息并确保 IP 地址为 127.0.0.1
,但这在最终删除之前浪费了大量资源(并运行了一大堆 Go 代码)连接。理想情况下,我可以检测 Golang 服务器以根据 IP 地址丢弃初始 TCP SYN 数据包,并且根本不创建 TCP 连接(或显示此端口正在监听)。
这里最干净的前进道路是什么?
最佳答案
正在转换 VonC
将评论转化为答案。
您可以通过在http.Server.Addr
或http.ListenAndServe
中设置host:port
来绑定(bind)主机。
他们在内部使用 net.Listen
。
来自 net.Listen
:
For TCP and UDP, the syntax of laddr is "host:port", like "127.0.0.1:8080". If host is omitted, as in ":8080", Listen listens on all available interfaces instead of just the interface with the given host address.
关于linux - 在 Go 中只接受来自 Localhost 的 HTTP 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41028709/