aboutsummaryrefslogtreecommitdiff
path: root/src/net/http
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/http')
-rw-r--r--src/net/http/serve_test.go21
-rw-r--r--src/net/http/server.go1
2 files changed, 22 insertions, 0 deletions
diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go
index 69d105ec63..9df6ab426c 100644
--- a/src/net/http/serve_test.go
+++ b/src/net/http/serve_test.go
@@ -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)
+ }
+}
diff --git a/src/net/http/server.go b/src/net/http/server.go
index 7d73cca43f..bd7cce6793 100644
--- a/src/net/http/server.go
+++ b/src/net/http/server.go
@@ -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)