@@ -199,6 +199,14 @@ func (p *proxyApp) handleForward(w http.ResponseWriter, r *http.Request) {
199199 }
200200 }()
201201 }
202+ announcedTrailers := len (resp .Trailer )
203+ if announcedTrailers > 0 {
204+ trailerKeys := make ([]string , 0 , announcedTrailers )
205+ for k := range resp .Trailer {
206+ trailerKeys = append (trailerKeys , k )
207+ }
208+ w .Header ().Add ("Trailer" , strings .Join (trailerKeys , ", " ))
209+ }
202210 delConnectionHeaders (resp .Header )
203211 delHopHeaders (resp .Header )
204212 copyHeader (w .Header (), resp .Header )
@@ -219,6 +227,15 @@ func (p *proxyApp) handleForward(w http.ResponseWriter, r *http.Request) {
219227 written = fmt .Sprintf ("%s - chunked" , written )
220228 }
221229 p .logger .Debug ().Msgf ("%s - %s - %s - %d - %s" , r .Proto , r .Method , r .Host , resp .StatusCode , written )
230+ if len (resp .Trailer ) == announcedTrailers {
231+ copyHeader (w .Header (), resp .Trailer )
232+ }
233+ for key , values := range resp .Trailer {
234+ key = http .TrailerPrefix + key
235+ for _ , v := range values {
236+ w .Header ().Add (key , v )
237+ }
238+ }
222239 done <- struct {}{}
223240 close (done )
224241}
0 commit comments