Skip to content

Instantly share code, notes, and snippets.

@vmihailenco
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vmihailenco/4cd0c0429719b1ceeeb5 to your computer and use it in GitHub Desktop.
Save vmihailenco/4cd0c0429719b1ceeeb5 to your computer and use it in GitHub Desktop.
func copyHeader(dst, src http.Header) {
for k, vv := range src {
for _, v := range vv {
dst.Add(k, v)
}
}
}
func cloneReq(req *http.Request) *http.Request {
outreq := new(http.Request)
*outreq = *req
outreq.URL = new(url.URL)
*outreq.URL = *req.URL
outreq.Header = make(http.Header)
copyHeader(outreq.Header, req.Header)
if req.Body != nil {
b, err := ioutil.ReadAll(req.Body)
if err != nil {
glog.Errorf("body read failed: %s", err)
}
outreq.Body = ioutil.NopCloser(bytes.NewReader(b))
}
return outreq
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment