feat: support custom http request headers (#868)

This commit is contained in:
Levi authored and GitHub committed 2025-01-16 00:19:50 +08:00
1 parent acc7ed8f6b
commit 0919936050
9 files changed
+160 -67

No files matched your search

+4
View File
@@ -427,6 +427,10 @@ func (f *Fetcher) buildRequest(ctx context.Context, req *base.Request) (httpReq
return
}
httpReq.Header = headers
// Override Host header
if host := headers.Get(base.HttpHeaderHost); host != "" {
httpReq.Host = host
}
return httpReq, nil
}
+16
View File
@@ -11,6 +11,7 @@ import (
"net"
gohttp "net/http"
"net/url"
"strings"
"testing"
"time"
)
@@ -59,6 +60,21 @@ func TestFetcher_Resolve(t *testing.T) {
}
}
func TestFetcher_ResolveWithHostHeader(t *testing.T) {
fetcher := buildFetcher()
err := fetcher.Resolve(&base.Request{
URL: "https://bing.com",
Extra: &http.ReqExtra{
Header: map[string]string{
"Host": "test",
},
},
})
if err == nil || !strings.Contains(err.Error(), "400") {
t.Errorf("Resolve() got = %v, want %v", err, "400")
}
}
func testResolve(startTestServer func() net.Listener, path string, want *base.Resource, t *testing.T) {
listener := startTestServer()
defer listener.Close()