更新 proxy/rewriter.go
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user