1
0
mirror of https://github.com/golang/go synced 2024-09-29 14:24:32 -06:00

net/http: clean the path of the stripped URL by StripPrefix

The path of the new stripped URL should also be cleaned. Since an empty path
may cause unexpected errors in some HTTP handlers, e.g. http.ServeFile.

Fixes #30165

Change-Id: Ib44fdce6388b5d62ffbcab5266925ef8f13f26e2
Reviewed-on: https://go-review.googlesource.com/c/161738
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Ggicci 2019-02-11 18:00:02 +08:00 committed by Brad Fitzpatrick
parent 5a7e8f466e
commit ea65d015b8
2 changed files with 10 additions and 1 deletions

View File

@ -2900,6 +2900,15 @@ func TestStripPrefix(t *testing.T) {
t.Errorf("test 2: got status %v, want %v", g, e)
}
res.Body.Close()
res, err = c.Get(ts.URL + "/foo")
if err != nil {
t.Fatal(err)
}
if g, e := res.Header.Get("X-Path"), "/"; g != e {
t.Errorf("test 3: got %s, want %s", g, e)
}
res.Body.Close()
}
// https://golang.org/issue/18952.

View File

@ -2030,7 +2030,7 @@ func StripPrefix(prefix string, h Handler) Handler {
*r2 = *r
r2.URL = new(url.URL)
*r2.URL = *r.URL
r2.URL.Path = p
r2.URL.Path = cleanPath(p)
h.ServeHTTP(w, r2)
} else {
NotFound(w, r)