我正在尝试在每个响应上设置服务器标头。我正在尝试使用Gin 中间件来实现这一目标。但是,由于某种原因,这不会设置标头。到目前为止,我已经尝试对此进行调试,但我无法理解为什么这不起作用。也许我在这里遗漏了一些东西。
\n\n这是代码
\n\npackage main\n\nimport "fmt"\nimport "github.com/gin-gonic/gin"\n\nconst SERVER_INFO = "Some-Play-Server"\n\ntype ServerHeader struct {\n gin.ResponseWriter\n ServerInfo string\n}\n\nfunc (w *ServerHeader) Write(data []byte) (int, error) {\n if w.Header().Get("Server") == "" {\n w.Header().Add("Server", w.ServerInfo)\n }\n\n return w.ResponseWriter.Write(data)\n}\n\nfunc InitServerHeader() gin.HandlerFunc {\n return func(c *gin.Context) {\n writer := &ServerHeader{c.Writer, SERVER_INFO}\n c.Writer = writer\n c.Next()\n }\n}\n\nfunc main() {\n mux := gin.Default()\n mux.Use(InitServerHeader())\n mux.GET("/", func(c *gin.Context) {\n c.String(200, "OK")\n })\n\n fmt.Println("Server Listening on 0.0.0.0:8080")\n mux.Run(":8080")\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n而且,这是测试输出
\n\n\xe2\x9d\xaf curl -v http://localhost:8080/\n* About to …
Run Code Online (Sandbox Code Playgroud)