diff --git a/http.go b/http.go index 314d0ef..5e37d90 100644 --- a/http.go +++ b/http.go @@ -24,7 +24,6 @@ type RangeReadSeekCloser struct { bufferOffset int64 closed bool fileName string - httpClient http.Client } func NewRangeReadSeekCloser(uri string) (*RangeReadSeekCloser, error) { @@ -34,9 +33,6 @@ func NewRangeReadSeekCloser(uri string) (*RangeReadSeekCloser, error) { } r := &RangeReadSeekCloser{ uri: parsedUrl, - httpClient: http.Client{ - Transport: &http3.RoundTripper{}, - }, } if err = r.getInformation(); err != nil { @@ -50,6 +46,16 @@ func (r *RangeReadSeekCloser) GetURI() string { return r.uri.String() } +func (r *RangeReadSeekCloser) getClient() *http.Client { + return &http.Client{ + CheckRedirect: func(req *http.Request, via []*http.Request) error { + req.Header.Del("referer") + return nil + }, + Transport: &http3.RoundTripper{}, + } +} + func (r *RangeReadSeekCloser) retryConnect() error { r.bodyLock.Lock() defer r.bodyLock.Unlock() @@ -62,7 +68,7 @@ func (r *RangeReadSeekCloser) retryConnect() error { expectedLength := r.size - startOffset headers.Set("Range", fmt.Sprintf("bytes=%d-", startOffset)) - response, err := r.httpClient.Do(&http.Request{ + response, err := r.getClient().Do(&http.Request{ Method: "GET", URL: r.uri, Header: headers, @@ -212,7 +218,7 @@ func (r *RangeReadSeekCloser) GetFileName() string { } func (r *RangeReadSeekCloser) getInformation() error { - response, err := r.httpClient.Head(r.GetURI()) + response, err := r.getClient().Head(r.GetURI()) if err != nil { return err }