在 Go 中间件中重写服务器头
背景
在 Go 中,你可以使用中间件处理和修改 HTTP 请求和响应。但是,当添加服务器中间件来控制 HTTP 标头时,如果其他处理程序也设置了服务器标头,您可能会遇到响应中存在多个服务器标头的问题。
可能的解决方案
type serverWriter struct { w http.ResponseWriter name string wroteHeader bool } func (s serverWriter) WriteHeader(code int) { if s.wroteHeader == false { s.w.Header().Set("Server", s.name) s.wroteHeader = true } s.w.WriteHeader(code) } func Server(h http.Handler, serverName string) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { sw := serverWriter{ w: w, name: serverName, wroteHeader: false, } h.ServeHTTP(sw, r) }) }
附加说明
以上是如何覆盖 Go 中间件中冲突的服务器标头?的详细内容。更多信息请关注PHP中文网其他相关文章!