Überschreiben von Server-Headern in Go-Middleware
Hintergrund
In Go können Sie Middleware verwenden um HTTP-Anfragen und -Antworten zu verarbeiten und zu ändern. Wenn Sie jedoch eine Server-Middleware zur Steuerung von HTTP-Headern hinzufügen, können Probleme auftreten, wenn in der Antwort mehrere Server-Header vorhanden sind, wenn andere Handler den Server-Header ebenfalls festlegen.
Mögliche Lösungen
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) }) }
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie kann ich widersprüchliche Server-Header in Go Middleware überschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!