Golang防火墙实现与应用指南

Golang防火墙实现与应用指南 尊敬的先生们:

每次运行 Golang Web 应用程序时如何移除这个防火墙。

Capture

谢谢

培训师

12 回复

非常感谢各位专家

更多关于Golang防火墙实现与应用指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


仍然显示先生。当我编译时防火墙会弹出

谢谢,但仍然显示无效

你能分享你的代码吗?

你好 @n_oandasan,请查看 @metonymyqt 的提及。

你好 edp1096 先生,我尝试了你的示例,但它不会询问防火墙。为什么?能否请你解释一下。这正是我想问的问题。谢谢。

你尝试过按照建议的方法操作吗?

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

改为

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

最简单的方法是使用 go build 命令替代,然后运行生成的可执行文件。这样你可以添加一个排除规则,只要二进制文件的名称和路径不变,Windows 就不会再次询问。

如果存在能够修复 go run 输出路径的方法,那也同样可行。

func main() {
    fmt.Println("hello world")
}

如果你只是在本地环境进行测试,

可以尝试将源代码中的监听地址从 :80 改为 127.0.0.1:80 吗?

这样Windows防火墙可能就不会再提示你了 😄

我尝试用你的代码创建了一个仓库,但无法复现防火墙出现的情况。

你能尝试构建下面的仓库吗?

GitHub GitHub

头像

practice-golang/datetime-echo

https://forum.golangbridge.org/t/go-lang-firewall/11086 - practice-golang/datetime-echo

package main

import (
  "html/template"
  "log"
  "net/http"
  "time"
)

type PageVariables struct {
	Date         string
	Time         string
}

func main() {
	http.HandleFunc("/", HomePage)
	log.Fatal(http.ListenAndServe(":8080", nil))
}

func HomePage(w http.ResponseWriter, r *http.Request){

	now := time.Now() // 获取当前时间
	HomePageVars := PageVariables{ // 将日期和时间存储在结构体中
	  Date: now.Format("02-01-2006"),
	  Time: now.Format("15:04:05"),
	}

	t, err := template.ParseFiles("homepage.html") // 解析html文件homepage.html
	if err != nil { // 如果出现错误
	  log.Print("模板解析错误: ", err) // 记录错误
	}
	err = t.Execute(w, HomePageVars) // 执行模板并传递HomePageVars结构体来填充空白
	if err != nil { // 如果出现错误
	  log.Print("模板执行错误: ", err) // 记录错误
	}
}

在Golang Web应用程序中,所谓的"防火墙"通常指的是开发服务器运行时显示的提示信息,而不是真正的网络安全防火墙。这是Go内置开发服务器的标准行为。

要移除这个提示,您需要使用-quiet标志运行您的应用程序。以下是具体实现方法:

方法1:使用命令行标志

go run main.go -quiet

方法2:在代码中设置环境变量

package main

import (
    "os"
    "net/http"
)

func main() {
    // 设置环境变量来禁用开发服务器提示
    os.Setenv("GIN_MODE", "release")
    
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello World"))
    })
    
    http.ListenAndServe(":8080", nil)
}

方法3:使用Gin框架时的配置

package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    // 设置为发布模式来禁用调试信息
    gin.SetMode(gin.ReleaseMode)
    
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.String(200, "Hello World")
    })
    
    r.Run(":8080")
}

方法4:自定义HTTP服务器

package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello World")
    })
    
    server := &http.Server{
        Addr: ":8080",
        // 自定义错误日志,可以设置为nil来完全禁用日志输出
        ErrorLog: log.New(os.Stderr, "", 0),
    }
    
    server.ListenAndServe()
}

这些方法可以有效移除开发服务器运行时的提示信息,让您的应用程序在控制台中显示更简洁的输出。

回到顶部