防火墙块Go开发服务器

时间:2013-09-24 10:07:06

标签: macos go firewall

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

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

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

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

2 个答案:

答案 0 :(得分:12)

根据您的情况,让您的go程序仅在localhost(127.0.0.1)上侦听可能更容易。这样,程序不需要请求防火墙遍历,并且您不会收到消息。

在Go中就像是:

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

而不是:

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

然后,您可以添加类似build或env变量的内容,以便在构建生产之前禁用localhost-only。

答案 1 :(得分:2)

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

类似的东西:

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

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

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

ipfw documentation