Macos 在开发AppEngine Go应用程序时防止OSX防火墙弹出
我目前正在本地使用Go编程语言开发AppEngine应用程序。我的操作系统是MacOSX10.8.3 我在开发过程中保持AppEngine的开发服务器(dev_appserver.py)运行。每次我保存一个应用程序文件(服务器正在监视该文件的更改)时,OSX防火墙对话框就会弹出“是否允许应用程序接收传入连接?”。对话框仅在不到一秒钟的时间内可见,然后再次消失Macos 在开发AppEngine Go应用程序时防止OSX防火墙弹出,macos,google-app-engine,dev-appserver,Macos,Google App Engine,Dev Appserver,我目前正在本地使用Go编程语言开发AppEngine应用程序。我的操作系统是MacOSX10.8.3 我在开发过程中保持AppEngine的开发服务器(dev_appserver.py)运行。每次我保存一个应用程序文件(服务器正在监视该文件的更改)时,OSX防火墙对话框就会弹出“是否允许应用程序接收传入连接?”。对话框仅在不到一秒钟的时间内可见,然后再次消失 我怎样才能让它不经常出现?我曾尝试在OS X防火墙中为“go”应用程序和简单的Python设置明确的规则,以接受或拒绝传入连接,但不管它(
我怎样才能让它不经常出现?我曾尝试在OS X防火墙中为“go”应用程序和简单的Python设置明确的规则,以接受或拒绝传入连接,但不管它(短暂)弹出什么。与Google Group上的应用引擎人员交谈,显然这在最新版本的SDK(1.8.1)中得到了修复。为了解决这个问题,我需要修补两个文件,以强制所有测试服务器只在
localhost
上侦听。我提交了一个拉取请求,所以这可能会在上游得到修复:
$GOPATH/src/google.golang.org/appengine/internal/main_vm.go
第25行;更改:
if err := http.ListenAndServe(":"+port, http.HandlerFunc(handleHTTP)); err != nil {
log.Fatalf("http.ListenAndServe: %v", err)
}
致:
我还需要修补$HOME/google cloud sdk/platform/google\u appengine/lib/portpicker/portpicker/\uuuu init\uuuuu.py
第79行:
sock.bind(('', port))
致:
不知道是否发生了变化,但我使用捆绑的GCloud SDK
dev_appserver.py
得到了这个错误。(2019-02-03,MacOS Mojave/10.14,谷歌云SDK 232.0.0)和Go 1.11
使用Go 1.11,显式绑定到localhost
有助于:
host:=“”
如果os.Getenv(“节点_ENV”)=“开发”{
host=“localhost”
Printf(“仅为'%s'绑定到'localhost',用于环境目的)
}
srv:=&http.Server{
经办人:r,
地址:fmt.Sprintf(“%s:%s”,主机,端口),
写入时间:10*次。秒,
读取超时:10*次。秒,
}
log.Fatal(srv.ListenAndServe())
编辑:但是,虽然这阻止了在初始启动时弹出“拒绝/允许”窗口,但它对自动重新启动没有帮助,除非我没有在app.yaml
文件中明确声明处理程序。很明显,引擎盖下还有更多的事情要做
然而,有了“裸”
app.yaml
文件,它就如我所希望的那样工作了。我不知道苹果防火墙,但我真的可以向你推荐小飞贼,我没有任何问题,只要定义应用尝试做某事时的规则就行了。已确认,绑定到localhost会抑制该对话框。
sock.bind(('', port))
sock.bind(('localhost', port))