Golang在Windows上运行,无需处理防火墙

piztneat  于 2023-06-03  发布在  Go
关注(0)|答案(9)|浏览(316)

我正在使用Go开发一个Rest API,但每次我尝试使用

go run main.go

Windows防火墙告诉我,它阻止了我的应用程序的某些功能。我想知道是否有一些方法使我的执行,而不必 * 接受 * 每次。

5f0d552i

5f0d552i1#

变更

http.ListenAndServe(":3000", r)

http.ListenAndServe("127.0.0.1:3000", r)
ne5o7dgx

ne5o7dgx2#

如果您调用go run main.go,则会发生以下情况:

  • 程序在临时文件夹中编译
  • 执行编译的二进制文件

但临时文件夹只用于一次执行。因此,下次通过go run运行程序时,将使用另一个文件夹。
Windows防火墙总是为您提供服务器的路径,如果您每次都记得路径,您将看到总是有不同的路径。
Windows防火墙已配置为记住每个程序的路径。因此,当路径更改时,您将始终需要确认允许 * 新 * 路径在该端口上运行。
要解决这个问题,你应该编译你的服务器。只需运行go build并执行项目文件夹中的二进制文件。那你只能接受一次。

mum43rcc

mum43rcc3#

你好,我遇到了同样的问题:试试这个:
1.进入Windows Defender防火墙,在左侧菜单中您看到入站规则单击此处,然后在右侧菜单中您会看到新建规则...单击。
1.
选择端口 * 从窗口打开->下一步
选择TCP*,然后 * 定义您想要的端口 * 我选择8080再次点击
下一步**,选择 * 允许连接下一步,检查所有下一步 给予任何名称 * Goland或任何你想要的,并按完成。就是这样

hsvhsicv

hsvhsicv4#

这个工作对我来说

go build main.go && .\main.exe

并使用makefile运行

kmbjn2e3

kmbjn2e35#

只需转到Windows防火墙通知设置:
Control Panel -> Windows Defender Firewall -> Change notification settings
取消选中Windows Defender Firewall阻止新应用时通知我选项,以防止其显示弹出窗口。

nxowjjhe

nxowjjhe6#

基于@apxp答案
windows cli中,这对我有效

Go build main.go && main.exe

deyfvvtc

deyfvvtc7#

我认为@apxp的回答是对情况的完整解释;问了这个问题后,我找到了一种运行应用程序方法:

go build -o ejecutable.exe ; if($?)  { .\ejecutable.exe }
7cjasjjr

7cjasjjr8#

你可以使用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"
af7jpaap

af7jpaap9#

WSL在VM下运行,所以必须执行ifconfig
您将在(eth0:)inet x.x.x.x部分看到您的IP
此x.x.x.x是您必须放入浏览器的IP。

相关问题