From: Brad Fitzpatrick Date: Tue, 28 Apr 2015 02:32:00 +0000 (-0700) Subject: net/http: test and document suppressing implicit Content-Type response header X-Git-Tag: go1.5beta1~860 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5ed44e9d4d06091a9e53128534ce389eb9754e80;p=gostls13.git net/http: test and document suppressing implicit Content-Type response header No code changes. Fixes #8992 Change-Id: I10c8340a4f8e3e7add9b3ac5aa0a1e8d8aa49f40 Reviewed-on: https://go-review.googlesource.com/9412 Reviewed-by: David Crawshaw Run-TryBot: Brad Fitzpatrick --- diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go index 6e1b3ed025..be54487441 100644 --- a/src/net/http/serve_test.go +++ b/src/net/http/serve_test.go @@ -1452,19 +1452,23 @@ func testHandlerPanic(t *testing.T, withHijack bool, panicValue interface{}) { } } -func TestNoDate(t *testing.T) { +func TestServerNoDate(t *testing.T) { testServerNoHeader(t, "Date") } +func TestServerNoContentType(t *testing.T) { testServerNoHeader(t, "Content-Type") } + +func testServerNoHeader(t *testing.T, header string) { defer afterTest(t) ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) { - w.Header()["Date"] = nil + w.Header()[header] = nil + io.WriteString(w, "foo") // non-empty })) defer ts.Close() res, err := Get(ts.URL) if err != nil { t.Fatal(err) } - _, present := res.Header["Date"] - if present { - t.Fatalf("Expected no Date header; got %v", res.Header["Date"]) + res.Body.Close() + if got, ok := res.Header[header]; ok { + t.Fatalf("Expected no %s header; got %q", header, got) } } diff --git a/src/net/http/server.go b/src/net/http/server.go index 565c87d392..1bde413a38 100644 --- a/src/net/http/server.go +++ b/src/net/http/server.go @@ -61,6 +61,7 @@ type ResponseWriter interface { // WriteHeader (or Write) has no effect unless the modified // headers were declared as trailers by setting the // "Trailer" header before the call to WriteHeader. + // To suppress implicit response headers, set their value to nil. Header() Header // Write writes the data to the connection as part of an HTTP reply.