Fix bug on avatar middleware (#15124)
This commit is contained in:
parent
687e2dfa55
commit
f4e677edb1
1 changed files with 11 additions and 2 deletions
|
@ -11,6 +11,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -87,13 +88,21 @@ func storageHandler(storageSetting setting.Storage, prefix string, objStore stor
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !strings.HasPrefix(req.URL.RequestURI(), "/"+prefix) {
|
prefix := strings.Trim(prefix, "/")
|
||||||
|
|
||||||
|
if !strings.HasPrefix(req.URL.EscapedPath(), "/"+prefix+"/") {
|
||||||
next.ServeHTTP(w, req)
|
next.ServeHTTP(w, req)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
rPath := strings.TrimPrefix(req.URL.RequestURI(), "/"+prefix)
|
rPath := strings.TrimPrefix(req.URL.EscapedPath(), "/"+prefix+"/")
|
||||||
rPath = strings.TrimPrefix(rPath, "/")
|
rPath = strings.TrimPrefix(rPath, "/")
|
||||||
|
if rPath == "" {
|
||||||
|
http.Error(w, "file not found", 404)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
rPath = path.Clean("/" + filepath.ToSlash(rPath))
|
||||||
|
rPath = rPath[1:]
|
||||||
|
|
||||||
fi, err := objStore.Stat(rPath)
|
fi, err := objStore.Stat(rPath)
|
||||||
if err == nil && httpcache.HandleTimeCache(req, w, fi) {
|
if err == nil && httpcache.HandleTimeCache(req, w, fi) {
|
||||||
|
|
Reference in a new issue