Commit fb86bbe2 authored by Patrick Mylund Nielsen's avatar Patrick Mylund Nielsen Committed by David Symonds

net/http: Don't set Content-Type header for HEAD requests by default

since the real type is not inferred.
Fixes #2885.

R=golang-dev, dsymonds, bradfitz
CC=golang-dev
https://golang.org/cl/5633045
parent f2d2b38c
......@@ -504,8 +504,9 @@ func Test304Responses(t *testing.T) {
}
// TestHeadResponses verifies that responses to HEAD requests don't
// declare that they're chunking in their response headers and aren't
// allowed to produce output.
// declare that they're chunking in their response headers, aren't
// allowed to produce output, and don't set a Content-Type since
// the real type of the body data cannot be inferred.
func TestHeadResponses(t *testing.T) {
ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
_, err := w.Write([]byte("Ignored body"))
......@@ -527,6 +528,10 @@ func TestHeadResponses(t *testing.T) {
if len(res.TransferEncoding) > 0 {
t.Errorf("expected no TransferEncoding; got %v", res.TransferEncoding)
}
ct := res.Header.Get("Content-Type")
if ct != "" {
t.Errorf("expected no Content-Type; got %s", ct)
}
body, err := ioutil.ReadAll(res.Body)
if err != nil {
t.Error(err)
......
......@@ -341,7 +341,7 @@ func (w *response) WriteHeader(code int) {
}
} else {
// If no content type, apply sniffing algorithm to body.
if w.header.Get("Content-Type") == "" {
if w.header.Get("Content-Type") == "" && w.req.Method != "HEAD" {
w.needSniff = true
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment