From 31cd013a1111ea1df66f2b8fb319cceb146bd06f Mon Sep 17 00:00:00 2001 From: XOF Date: Mon, 15 Dec 2025 05:42:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20proxy/rewriter.go?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- proxy/rewriter.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/proxy/rewriter.go b/proxy/rewriter.go index 765cb31..59f8ce4 100644 --- a/proxy/rewriter.go +++ b/proxy/rewriter.go @@ -135,16 +135,22 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string { urlStr = r.baseURL.Scheme + ":" + urlStr } + // 绝对路径(以 / 开头但不是 //) + if strings.HasPrefix(urlStr, "/") && !strings.HasPrefix(urlStr, "//") { + return "/p/" + r.token + urlStr + } + u, err := url.Parse(urlStr) if err != nil { return urlStr } + // 相对路径 if !u.IsAbs() { u = r.baseURL.ResolveReference(u) } - // 同域名,只保留路径 + // 同域名 if u.Host == r.baseURL.Host { proxyPath := u.Path if u.RawQuery != "" { @@ -156,9 +162,8 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string { return "/p/" + r.token + proxyPath } - // 跨域资源,完整 URL - fullURL := u.String() - return "/p/" + r.token + "/" + fullURL + // 跨域资源 + return "/p/" + r.token + "/" + u.String() } func (r *ContentRewriter) rewriteSrcset(srcset string) string {