9

我正在使用 Beego 框架在 Go 中开发 API。当我保存我的一个文件时,Beego 框架重新启动了 Go 开发服务器(像往常一样),一切都更新了。

当二进制文件(Go 服务器文件)被重建并重新启动时,我的 Mac 上出现的唯一问题是我的防火墙要求允许二进制文件接受传入的网络连接。

我做了一些关于签署二进制文件等的研究,但没有任何帮助,因为在我的一个文件每次更改后都会重新构建二进制文件(因此 Go 开发服务器重新启动)

有谁知道在不关闭防火墙的情况下忽略弹出窗口的解决方案?

4

2 回答 2

29

根据您的情况,让您的 go 程序仅在 localhost (127.0.0.1) 上侦听实际上可能更容易。这样程序就不需要请求防火墙穿越,你也不会收到消息。

在 Go 中是这样的:

log.Fatal(http.ListenAndServe("127.0.0.1:8080", router))

代替:

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

然后,您可以添加诸如构建或环境变量之类的东西来禁用仅限本地主机的东西,然后再为生产构建它。

于 2017-09-16T15:45:25.120 回答
3

如果您知道 Go 程序正在侦听的 TCP/IP 端口,则可以在防火墙中打开该端口。

就像是:

sudo ipfw add 8080 allow tcp from any to any dst-port 8080

应该可以解决问题,但可能值得在 OSX 防火墙上进行一些阅读。这个讨论看起来很有希望。

编辑:从 OSX 10.8 开始,ipfw 已被弃用(尽管它仍然有效)。您现在应该使用pfctl。有一个用于配置它的 GUI,称为"IceFloor"

ipfw文件

于 2013-09-24T10:59:17.527 回答