更新 proxy/rewriter.go

This commit is contained in:
XOF
2025-12-15 06:48:38 +08:00
parent 6ae5f0b800
commit a39914ad45

View File

@@ -125,17 +125,14 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string {
return urlStr
}
// 已经是代理 URL直接返回
if strings.HasPrefix(urlStr, "/p/"+r.token+"/") {
return urlStr
}
// 处理协议相对 URL//domain.com/path
if strings.HasPrefix(urlStr, "//") {
urlStr = r.baseURL.Scheme + ":" + urlStr
}
// 绝对路径(以 / 开头但不是 //
if strings.HasPrefix(urlStr, "/") && !strings.HasPrefix(urlStr, "//") {
return "/p/" + r.token + urlStr
}
@@ -145,12 +142,18 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string {
return urlStr
}
// 相对路径
if !u.IsAbs() {
u = r.baseURL.ResolveReference(u)
resolved := r.baseURL.ResolveReference(u)
proxyPath := resolved.Path
if resolved.RawQuery != "" {
proxyPath += "?" + resolved.RawQuery
}
if resolved.Fragment != "" {
proxyPath += "#" + resolved.Fragment
}
return "/p/" + r.token + proxyPath
}
// 同域名
if u.Host == r.baseURL.Host {
proxyPath := u.Path
if u.RawQuery != "" {
@@ -162,7 +165,6 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string {
return "/p/" + r.token + proxyPath
}
// 跨域资源
return "/p/" + r.token + "/" + u.String()
}