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 阻止新应用时通知我 以防止其显示弹出窗口。

您好,我遇到了同样的问题: 试试看:

  1. 转到 Windows Defender Firewall,在左侧菜单中您看到 入站规则 单击此处,然后单击右侧菜单您将看到 新规则... 单击。
  2. 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。