From 3bc1d0a63720ece7dd1ad3c8b4f54eb4762f5153 Mon Sep 17 00:00:00 2001 From: XOF Date: Mon, 15 Dec 2025 18:04:17 +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 | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/proxy/rewriter.go b/proxy/rewriter.go index 28024e2..21556f8 100644 --- a/proxy/rewriter.go +++ b/proxy/rewriter.go @@ -161,16 +161,22 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string { if !u.IsAbs() { resolved := r.baseURL.ResolveReference(u) - proxyPath := resolved.Path - if resolved.RawQuery != "" { - proxyPath += "?" + resolved.RawQuery + // 同域相对路径,只保留路径部分 + if resolved.Host == r.baseURL.Host { + proxyPath := resolved.Path + if resolved.RawQuery != "" { + proxyPath += "?" + resolved.RawQuery + } + if resolved.Fragment != "" { + proxyPath += "#" + resolved.Fragment + } + return "/p/" + r.token + proxyPath } - if resolved.Fragment != "" { - proxyPath += "#" + resolved.Fragment - } - return "/p/" + r.token + proxyPath + // 跨域相对路径(罕见),保留完整 URL + return "/p/" + r.token + "/" + resolved.String() } + // 同域绝对 URL,只保留路径 if u.Host == r.baseURL.Host { proxyPath := u.Path if u.RawQuery != "" { @@ -182,6 +188,7 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string { return "/p/" + r.token + proxyPath } + // 跨域绝对 URL,保留完整 URL return "/p/" + r.token + "/" + u.String() }