Go version

go1.24.6

Output of go env in your module/workspace:

GOVERSION="go1.24.6"

What did you do?

Run the following code

package main

import (
    "fmt"
    "net/http"

    "net/http/httptest"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Printf("r.Body: %#v\n", r.Body)
    err := r.ParseMultipartForm(1024)
    if err != nil {
        fmt.Println("r.ParseMultipartForm error:", err)
        w.WriteHeader(500)
    }
}

func main() {
    req := httptest.NewRequest(http.MethodPost, "http://localhost/upload", nil)
    req.Header.Set("Content-Type", "multipart/form-data;boundary=-----TEST")
    fmt.Printf("req.Body: %#v\n", req.Body)
    w := httptest.NewRecorder()
    handler(w, req)
    resp := w.Result()
    fmt.Println("response code:", resp.StatusCode)
}

I created a http POST form request without body

What did you see happen?

req.Body: http.noBody{} r.Body: http.noBody{} r.ParseMultipartForm error: multipart: NextPart: EOF response code: 500

What did you expect to see?

req.Body: http.noBody{} r.Body: http.noBody{} r.ParseMultipartForm error: missing form body response code: 500

Comment From: gopherbot

Change https://go.dev/cl/692756 mentions this issue: net/http: fix server-side http parse form error inaccurate issue