Go 中只接受来自 Localhost 的 HTTP 连接?
问题:Go 中只接受来自 Localhost 的 HTTP 连接? 我在 Golang 中有一个简单的 HTTP 服务器: h := http.NewServeMux() h.Handle("/somepath", MyHandler) s := &http.Server{ Addr: "1234", Handler: h, } s.ListenAndServe(); 在调用者不是本地主机的情况下
·
问题:Go 中只接受来自 Localhost 的 HTTP 连接?
我在 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
来绑定主机。
他们在内部使用net.Listen
。
从net.Listen
:
对于 TCP 和 UDP,laddr 的语法是“host:port”,如“127.0.0.1:8080”。如果 host 被省略,如 ":8080",Listen 会监听所有可用的接口,而不仅仅是具有给定主机地址的接口。
更多推荐
已为社区贡献12906条内容
所有评论(0)