enable prefix matching within slash boundaries
This commit is contained in:
parent
5a578c5375
commit
fd70e6edb1
2 changed files with 9 additions and 9 deletions
|
@ -16,17 +16,9 @@ type StripPrefix struct {
|
||||||
|
|
||||||
func (s *StripPrefix) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
func (s *StripPrefix) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
for _, prefix := range s.Prefixes {
|
for _, prefix := range s.Prefixes {
|
||||||
origPrefix := strings.TrimSpace(prefix)
|
|
||||||
if origPrefix == r.URL.Path {
|
|
||||||
r.URL.Path = "/"
|
|
||||||
s.serveRequest(w, r, origPrefix)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
prefix = strings.TrimSuffix(origPrefix, "/") + "/"
|
|
||||||
if p := strings.TrimPrefix(r.URL.Path, prefix); len(p) < len(r.URL.Path) {
|
if p := strings.TrimPrefix(r.URL.Path, prefix); len(p) < len(r.URL.Path) {
|
||||||
r.URL.Path = "/" + strings.TrimPrefix(p, "/")
|
r.URL.Path = "/" + strings.TrimPrefix(p, "/")
|
||||||
s.serveRequest(w, r, origPrefix)
|
s.serveRequest(w, r, strings.TrimSpace(prefix))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,6 +86,14 @@ func TestStripPrefix(t *testing.T) {
|
||||||
expectedPath: "/",
|
expectedPath: "/",
|
||||||
expectedHeader: "/stat",
|
expectedHeader: "/stat",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
desc: "prefix matching within slash boundaries",
|
||||||
|
prefixes: []string{"/stat"},
|
||||||
|
path: "/status",
|
||||||
|
expectedStatusCode: http.StatusOK,
|
||||||
|
expectedPath: "/us",
|
||||||
|
expectedHeader: "/stat",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
|
|
Loading…
Reference in a new issue