【问题标题】:Firewall blocks Go development server防火墙阻止 Go 开发服务器
【发布时间】:2018-04-14 22:39:20
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: macos go firewall


    【解决方案1】:

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

    在 Go 中类似于:

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

    代替:

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

    然后,您可以添加诸如构建或环境变量之类的内容,以在构建用于生产之前禁用仅限 localhost 的东西。

    【讨论】:

    • 你拯救了我的一天。
    【解决方案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

    【讨论】:

      猜你喜欢
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 2019-04-07
      相关资源
      最近更新 更多