mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
net/http: skip content-type sniffing if the header is explicitly unset.
Fixes #5953 R=dsymonds, bradfitz, rsc CC=golang-dev https://golang.org/cl/14434044
This commit is contained in:
parent
51c0d7c0a7
commit
21e6b90d36
4 changed files with 34 additions and 10 deletions
|
|
@ -20,6 +20,7 @@ import (
|
|||
"os/exec"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"strconv"
|
||||
|
|
@ -319,24 +320,29 @@ func TestServeFileContentType(t *testing.T) {
|
|||
defer afterTest(t)
|
||||
const ctype = "icecream/chocolate"
|
||||
ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
|
||||
if r.FormValue("override") == "1" {
|
||||
switch r.FormValue("override") {
|
||||
case "1":
|
||||
w.Header().Set("Content-Type", ctype)
|
||||
case "2":
|
||||
// Explicitly inhibit sniffing.
|
||||
w.Header()["Content-Type"] = []string{}
|
||||
}
|
||||
ServeFile(w, r, "testdata/file")
|
||||
}))
|
||||
defer ts.Close()
|
||||
get := func(override, want string) {
|
||||
get := func(override string, want []string) {
|
||||
resp, err := Get(ts.URL + "?override=" + override)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if h := resp.Header.Get("Content-Type"); h != want {
|
||||
t.Errorf("Content-Type mismatch: got %q, want %q", h, want)
|
||||
if h := resp.Header["Content-Type"]; !reflect.DeepEqual(h, want) {
|
||||
t.Errorf("Content-Type mismatch: got %v, want %v", h, want)
|
||||
}
|
||||
resp.Body.Close()
|
||||
}
|
||||
get("0", "text/plain; charset=utf-8")
|
||||
get("1", ctype)
|
||||
get("0", []string{"text/plain; charset=utf-8"})
|
||||
get("1", []string{ctype})
|
||||
get("2", nil)
|
||||
}
|
||||
|
||||
func TestServeFileMimeType(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue