mirror of https://github.com/golang/go.git
net/http: remove Content-Length header in http.Error
Error replies to a request with an error message and HTTP code. Delete any preexisting Content-Length header before writing the header; if a Content-Length is present, it's probably for content that the caller has given up on writing. For #50905 Change-Id: Ia3d4ca008be46fa5d41afadf29ca5cacb1c47660 Reviewed-on: https://go-review.googlesource.com/c/go/+/554216 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Jonathan Amsterdam <jba@google.com>
This commit is contained in:
parent
adc575e64c
commit
4e7bd20f8f
|
|
@ -7052,3 +7052,24 @@ func testDisableContentLength(t *testing.T, mode testMode) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestErrorContentLength(t *testing.T) { run(t, testErrorContentLength) }
|
||||
func testErrorContentLength(t *testing.T, mode testMode) {
|
||||
const errorBody = "an error occurred"
|
||||
cst := newClientServerTest(t, mode, HandlerFunc(func(w ResponseWriter, r *Request) {
|
||||
w.Header().Set("Content-Length", "1000")
|
||||
Error(w, errorBody, 400)
|
||||
}))
|
||||
res, err := cst.c.Get(cst.ts.URL)
|
||||
if err != nil {
|
||||
t.Fatalf("Get(%q) = %v", cst.ts.URL, err)
|
||||
}
|
||||
defer res.Body.Close()
|
||||
body, err := io.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
t.Fatalf("io.ReadAll(res.Body) = %v", err)
|
||||
}
|
||||
if string(body) != errorBody+"\n" {
|
||||
t.Fatalf("read body: %q, want %q", string(body), errorBody)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2173,6 +2173,7 @@ func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
|
|||
// writes are done to w.
|
||||
// The error message should be plain text.
|
||||
func Error(w ResponseWriter, error string, code int) {
|
||||
w.Header().Del("Content-Length")
|
||||
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
|
||||
w.Header().Set("X-Content-Type-Options", "nosniff")
|
||||
w.WriteHeader(code)
|
||||
|
|
|
|||
Loading…
Reference in New Issue