aboutsummaryrefslogtreecommitdiff
path: root/src/net/http/httputil/reverseproxy_test.go
diff options
context:
space:
mode:
authorArtyom Pervukhin <artyom.pervukhin@gmail.com>2016-05-16 15:30:28 +0300
committerBrad Fitzpatrick <bradfitz@golang.org>2016-05-16 15:03:59 +0000
commit6a6c1d9841a1957a2fd292df776ea920ae38ea00 (patch)
treea0bf094ffab48c02d9d8366b8fe64eba2ae5b412 /src/net/http/httputil/reverseproxy_test.go
parenta101b85e00f302706d8b1de1d2173a154d5f54cc (diff)
downloadgo-6a6c1d9841a1957a2fd292df776ea920ae38ea00.tar.gz
go-6a6c1d9841a1957a2fd292df776ea920ae38ea00.zip
net/http/httputil: don't add User-Agent header by proxy made with NewSingleHostReverseProxy
If client does not provided User-Agent header, do not set default one used by net/http package when doing request to backend. Fixes #15524 Change-Id: I9a46bb3b7ec106bc7c3071e235b872d279994d67 Reviewed-on: https://go-review.googlesource.com/23089 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/net/http/httputil/reverseproxy_test.go')
-rw-r--r--src/net/http/httputil/reverseproxy_test.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/net/http/httputil/reverseproxy_test.go b/src/net/http/httputil/reverseproxy_test.go
index e9c0658271..fe7cdb888f 100644
--- a/src/net/http/httputil/reverseproxy_test.go
+++ b/src/net/http/httputil/reverseproxy_test.go
@@ -348,6 +348,49 @@ func TestNilBody(t *testing.T) {
}
}
+// Issue 15524
+func TestUserAgentHeader(t *testing.T) {
+ const explicitUA = "explicit UA"
+ backend := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ if r.URL.Path == "/noua" {
+ if c := r.Header.Get("User-Agent"); c != "" {
+ t.Errorf("handler got non-empty User-Agent header %q", c)
+ }
+ return
+ }
+ if c := r.Header.Get("User-Agent"); c != explicitUA {
+ t.Errorf("handler got unexpected User-Agent header %q", c)
+ }
+ }))
+ defer backend.Close()
+ backendURL, err := url.Parse(backend.URL)
+ if err != nil {
+ t.Fatal(err)
+ }
+ proxyHandler := NewSingleHostReverseProxy(backendURL)
+ proxyHandler.ErrorLog = log.New(ioutil.Discard, "", 0) // quiet for tests
+ frontend := httptest.NewServer(proxyHandler)
+ defer frontend.Close()
+
+ getReq, _ := http.NewRequest("GET", frontend.URL, nil)
+ getReq.Header.Set("User-Agent", explicitUA)
+ getReq.Close = true
+ res, err := http.DefaultClient.Do(getReq)
+ if err != nil {
+ t.Fatalf("Get: %v", err)
+ }
+ res.Body.Close()
+
+ getReq, _ = http.NewRequest("GET", frontend.URL+"/noua", nil)
+ getReq.Header.Set("User-Agent", "")
+ getReq.Close = true
+ res, err = http.DefaultClient.Do(getReq)
+ if err != nil {
+ t.Fatalf("Get: %v", err)
+ }
+ res.Body.Close()
+}
+
type bufferPool struct {
get func() []byte
put func([]byte)