Fix bug on avatar middleware (#15124)

This commit is contained in:
Lunny Xiao 2021-03-24 01:20:24 +08:00 committed by GitHub
parent 687e2dfa55
commit f4e677edb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 2 deletions

View File

@ -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) {