在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) }) }
Inner-Most中間件: 或者,使伺服器中間件成為最內部的中間件,允許其攔截並覆蓋外部處理程序設定的其他標頭。
以上是如何覆蓋 Go 中間件中衝突的伺服器標頭?的詳細內容。更多資訊請關注PHP中文網其他相關文章!