Mengatasi Pengepala Pelayan dalam Go Middleware
Latar Belakang
Dalam Go, anda boleh menggunakan middleware untuk mengendalikan dan mengubah suai permintaan dan respons HTTP. Walau bagaimanapun, apabila menambah perisian tengah Pelayan untuk mengawal pengepala HTTP, anda mungkin menghadapi masalah dengan berbilang pengepala Pelayan yang terdapat dalam respons jika pengendali lain turut menetapkan pengepala Pelayan.
Penyelesaian Yang Mungkin
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) }) }
Nota Tambahan
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengatasi Pengepala Pelayan Bercanggah dalam Go Middleware?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!