From 51bd794f4383a86fb64ca4ff1d03dfd56d7c21b4 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 1 Jul 2024 21:59:57 +0800 Subject: [PATCH] :art: Improve assets serving https://github.com/siyuan-note/siyuan/issues/11823 --- kernel/server/serve.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/kernel/server/serve.go b/kernel/server/serve.go index b5b696922..c530395e2 100644 --- a/kernel/server/serve.go +++ b/kernel/server/serve.go @@ -393,8 +393,18 @@ func serveAssets(ginServer *gin.Engine) { relativePath := path.Join("assets", requestPath) p, err := model.GetAssetAbsPath(relativePath) if nil != err { - context.Status(http.StatusNotFound) - return + if strings.Contains(strings.TrimPrefix(requestPath, "/"), "/") { + // 再使用编码过的路径解析一次 https://github.com/siyuan-note/siyuan/issues/11823 + dest := url.PathEscape(strings.TrimPrefix(requestPath, "/")) + dest = strings.ReplaceAll(dest, ":", "%3A") + relativePath = path.Join("assets", dest) + p, err = model.GetAssetAbsPath(relativePath) + } + + if nil != err { + context.Status(http.StatusNotFound) + return + } } http.ServeFile(context.Writer, context.Request, p) return