Windows 上的 Golang 运行 未处理防火墙
Golang run on Windows without deal with the Firewall
我正在使用 Go 进行休息 API,但每次我尝试使用 运行 我的应用程序
go run main.go
Windows 防火墙告诉我它阻止了我的应用程序的某些功能。我想知道是否有某种方法可以让我执行死刑而不必每次都接受。
如果您正在呼叫 go run main.go
,则会发生以下情况:
- 你的程序是在一个临时文件夹中编译的
- 执行编译后的二进制文件
但是临时文件夹只能执行一次。因此,下次当您通过 go run
运行 您的程序时,将使用另一个文件夹。
windows 防火墙确实总是为您提供服务器路径的信息,如果您每次都记得这些路径,您会发现总是有不同的路径。
windows 防火墙配置得非常好,它可以记住每个程序的路径。因此,当路径发生变化时,您将始终需要确认允许 new 路径到该端口上的 运行。
要解决这个问题,您应该编译您的服务器。只需 运行 go build
然后在项目文件夹中执行二进制文件。那么你只需要接受一次。
我认为@apxp 的回答是对情况的完整解释;问这个问题一段时间后,我找到了 运行 我的应用程序的方法:
go build -o ejecutable.exe ; if($?) { .\ejecutable.exe }
只需转到您的 Windows 防火墙通知设置:
Control Panel -> Windows Defender Firewall -> Change notification settings
取消选中 当 Windows Defender Firewall 阻止新应用时通知我 以防止其显示弹出窗口。
您好,我遇到了同样的问题:
试试看:
- 转到 Windows Defender Firewall,在左侧菜单中您看到 入站规则 单击此处,然后单击右侧菜单您将看到 新规则... 单击。
- Choose Port opened from window -> Next
SelectTCP,然后定义你想要的端口我选择8080再点击下一步,选择允许连接下一步,勾选所有下一步,给出任意名称 Goland 或任何你想要的东西,然后按 Finish。就是这样
基于@apxp回答
在 windowscli 这对我有用
去构建 main.go && main.exe
这对我有用
go build main.go && .\main.exe
和运行 使用 makefile
您可以使用 CompileDaemon 在文件更改时自动重新构建您的项目,因为无论如何它都会运行一个构建,您只需接受一次。另外,您的项目将自动重新构建!
安装:
go get https://github.com/githubnemo/CompileDaemon
用法示例:
# Assuming your project looks like and you're in your project working dir
# hello/
# hello.go
# Rebuild on .go file edits and run the hello command after
CompileDaemon -command="./hello"
改变
http.ListenAndServe(":3000", r)
至
http.ListenAndServe("127.0.0.1:3000", r)
VM下的WSL运行,所以要执行ifconfig
您将在 (eth0:) inet 部分看到您的 IP x.x.x.x
这个x.x.x.x就是你要输入浏览器的IP。
我正在使用 Go 进行休息 API,但每次我尝试使用 运行 我的应用程序
go run main.go
Windows 防火墙告诉我它阻止了我的应用程序的某些功能。我想知道是否有某种方法可以让我执行死刑而不必每次都接受。
如果您正在呼叫 go run main.go
,则会发生以下情况:
- 你的程序是在一个临时文件夹中编译的
- 执行编译后的二进制文件
但是临时文件夹只能执行一次。因此,下次当您通过 go run
运行 您的程序时,将使用另一个文件夹。
windows 防火墙确实总是为您提供服务器路径的信息,如果您每次都记得这些路径,您会发现总是有不同的路径。
windows 防火墙配置得非常好,它可以记住每个程序的路径。因此,当路径发生变化时,您将始终需要确认允许 new 路径到该端口上的 运行。
要解决这个问题,您应该编译您的服务器。只需 运行 go build
然后在项目文件夹中执行二进制文件。那么你只需要接受一次。
我认为@apxp 的回答是对情况的完整解释;问这个问题一段时间后,我找到了 运行 我的应用程序的方法:
go build -o ejecutable.exe ; if($?) { .\ejecutable.exe }
只需转到您的 Windows 防火墙通知设置:
Control Panel -> Windows Defender Firewall -> Change notification settings
取消选中 当 Windows Defender Firewall 阻止新应用时通知我 以防止其显示弹出窗口。
您好,我遇到了同样的问题: 试试看:
- 转到 Windows Defender Firewall,在左侧菜单中您看到 入站规则 单击此处,然后单击右侧菜单您将看到 新规则... 单击。
- Choose Port opened from window -> Next SelectTCP,然后定义你想要的端口我选择8080再点击下一步,选择允许连接下一步,勾选所有下一步,给出任意名称 Goland 或任何你想要的东西,然后按 Finish。就是这样
基于@apxp回答
在 windowscli 这对我有用
去构建 main.go && main.exe
这对我有用
go build main.go && .\main.exe
和运行 使用 makefile
您可以使用 CompileDaemon 在文件更改时自动重新构建您的项目,因为无论如何它都会运行一个构建,您只需接受一次。另外,您的项目将自动重新构建!
安装:
go get https://github.com/githubnemo/CompileDaemon
用法示例:
# Assuming your project looks like and you're in your project working dir
# hello/
# hello.go
# Rebuild on .go file edits and run the hello command after
CompileDaemon -command="./hello"
改变
http.ListenAndServe(":3000", r)
至
http.ListenAndServe("127.0.0.1:3000", r)
VM下的WSL运行,所以要执行ifconfig
您将在 (eth0:) inet 部分看到您的 IP x.x.x.x
这个x.x.x.x就是你要输入浏览器的IP。