Merge pull request #96127 from fonsecas72/header-accept-encoding

HTTP Probe: Removes Accept-Encoding header from http probe
This commit is contained in:
Kubernetes Prow Robot 2020-11-10 19:49:48 -08:00 committed by GitHub
commit 87ed842fa3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 7 deletions

View File

@ -70,6 +70,7 @@ type httpProber struct {
// Probe returns a ProbeRunner capable of running an HTTP check. // Probe returns a ProbeRunner capable of running an HTTP check.
func (pr httpProber) Probe(url *url.URL, headers http.Header, timeout time.Duration) (probe.Result, string, error) { func (pr httpProber) Probe(url *url.URL, headers http.Header, timeout time.Duration) (probe.Result, string, error) {
pr.transport.DisableCompression = true // removes Accept-Encoding header
client := &http.Client{ client := &http.Client{
Timeout: timeout, Timeout: timeout,
Transport: pr.transport, Transport: pr.transport,
@ -104,15 +105,12 @@ func DoHTTPProbe(url *url.URL, headers http.Header, client GetHTTPInterface) (pr
if _, ok := headers["Accept"]; !ok { if _, ok := headers["Accept"]; !ok {
// Accept header was not defined. accept all // Accept header was not defined. accept all
headers.Set("Accept", "*/*") headers.Set("Accept", "*/*")
} } else if headers.Get("Accept") == "" {
if headers.Get("Accept") == "" {
// Accept header was overridden but is empty. removing // Accept header was overridden but is empty. removing
headers.Del("Accept") headers.Del("Accept")
} }
req.Header = headers req.Header = headers
if headers.Get("Host") != "" { req.Host = headers.Get("Host")
req.Host = headers.Get("Host")
}
res, err := client.Do(req) res, err := client.Do(req)
if err != nil { if err != nil {
// Convert errors into failures to catch timeouts. // Convert errors into failures to catch timeouts.

View File

@ -158,13 +158,37 @@ func TestHTTPProbeChecker(t *testing.T) {
handler: headerCounterHandler, handler: headerCounterHandler,
reqHeaders: http.Header{}, reqHeaders: http.Header{},
health: probe.Success, health: probe.Success,
accBody: "4", accBody: "3",
}, },
{ {
handler: headerKeysNamesHandler, handler: headerKeysNamesHandler,
reqHeaders: http.Header{}, reqHeaders: http.Header{},
health: probe.Success, health: probe.Success,
accBody: "Accept\nAccept-Encoding\nConnection\nUser-Agent", accBody: "Accept\nConnection\nUser-Agent",
},
{
handler: headerEchoHandler,
reqHeaders: http.Header{
"Accept-Encoding": {"gzip"},
},
health: probe.Success,
accBody: "Accept-Encoding: gzip",
},
{
handler: headerEchoHandler,
reqHeaders: http.Header{
"Accept-Encoding": {"foo"},
},
health: probe.Success,
accBody: "Accept-Encoding: foo",
},
{
handler: headerEchoHandler,
reqHeaders: http.Header{
"Accept-Encoding": {""},
},
health: probe.Success,
accBody: "Accept-Encoding: \n",
}, },
{ {
handler: headerEchoHandler, handler: headerEchoHandler,