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() }