code: func redirectPreserveHeaders(req *http.Request, via []*http.Request) error {
  	if len(via) == 0 {
  		// No redirects
  		return nil
  	}
  
  	if len(via) > defaultRedirectLimit {
  		return fmt.Errorf("%d consecutive requests(redirects)", len(via))
  	}
  
  	// mutate the subsequent redirect requests with the first Header
  	for key, val := range via[0].Header {
  		req.Header[key] = val
  	}
  	return nil
  }
docs: // Preserve headers on redirect.
  //
  // Reference https://github.com/golang/go/issues/4800