Merge pull request #1419 from aaronlehmann/safer-header-copying

On redirect, only copy headers when they don't already exist in the redirected request
This commit is contained in:
Richard Scothern 2016-02-05 12:14:01 -08:00
commit 8745d31f60

View file

@ -36,8 +36,21 @@ func checkHTTPRedirect(req *http.Request, via []*http.Request) error {
if len(via) > 0 {
for headerName, headerVals := range via[0].Header {
if headerName == "Accept" || headerName == "Range" {
for _, val := range headerVals {
if headerName != "Accept" && headerName != "Range" {
continue
}
for _, val := range headerVals {
// Don't add to redirected request if redirected
// request already has a header with the same
// name and value.
hasValue := false
for _, existingVal := range req.Header[headerName] {
if existingVal == val {
hasValue = true
break
}
}
if !hasValue {
req.Header.Add(headerName, val)
}
}