Remplacement des en-têtes de serveur dans Go Middleware
Arrière-plan
Dans Go, vous pouvez utiliser un middleware pour gérer et modifier les requêtes et réponses HTTP. Cependant, lors de l'ajout d'un middleware de serveur pour contrôler les en-têtes HTTP, vous pouvez rencontrer des problèmes avec la présence de plusieurs en-têtes de serveur dans la réponse si d'autres gestionnaires définissent également l'en-tête du serveur.
Solutions possibles
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) }) }
Notes supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!