/
redirect.go
34 lines (30 loc) · 767 Bytes
/
redirect.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package request
import (
"net/http"
"errors"
)
// DefaultRedirectLimit define max redirect counts
var DefaultRedirectLimit = 10
// ErrMaxRedirect when redirect times great than DefaultRedirectLimit will return this error
var ErrMaxRedirect = errors.New("Exceeded max redirects")
func defaultCheckRedirect(req *http.Request, via []*http.Request) error {
if len(via) > DefaultRedirectLimit {
return ErrMaxRedirect
}
if len(via) == 0 {
return nil
}
// Redirect requests with the first Header
for key, val := range via[0].Header {
// Don't copy Referer Header
if key != "Referer" {
req.Header[key] = val
}
}
return nil
}
func applyCheckRdirect(a *Args) {
if a.Client.CheckRedirect == nil {
a.Client.CheckRedirect = defaultCheckRedirect
}
}