更新 proxy/rewriter.go
This commit is contained in:
@@ -125,17 +125,14 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string {
|
|||||||
return urlStr
|
return urlStr
|
||||||
}
|
}
|
||||||
|
|
||||||
// 已经是代理 URL,直接返回
|
|
||||||
if strings.HasPrefix(urlStr, "/p/"+r.token+"/") {
|
if strings.HasPrefix(urlStr, "/p/"+r.token+"/") {
|
||||||
return urlStr
|
return urlStr
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理协议相对 URL(//domain.com/path)
|
|
||||||
if strings.HasPrefix(urlStr, "//") {
|
if strings.HasPrefix(urlStr, "//") {
|
||||||
urlStr = r.baseURL.Scheme + ":" + urlStr
|
urlStr = r.baseURL.Scheme + ":" + urlStr
|
||||||
}
|
}
|
||||||
|
|
||||||
// 绝对路径(以 / 开头但不是 //)
|
|
||||||
if strings.HasPrefix(urlStr, "/") && !strings.HasPrefix(urlStr, "//") {
|
if strings.HasPrefix(urlStr, "/") && !strings.HasPrefix(urlStr, "//") {
|
||||||
return "/p/" + r.token + urlStr
|
return "/p/" + r.token + urlStr
|
||||||
}
|
}
|
||||||
@@ -145,12 +142,18 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string {
|
|||||||
return urlStr
|
return urlStr
|
||||||
}
|
}
|
||||||
|
|
||||||
// 相对路径
|
|
||||||
if !u.IsAbs() {
|
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 {
|
if u.Host == r.baseURL.Host {
|
||||||
proxyPath := u.Path
|
proxyPath := u.Path
|
||||||
if u.RawQuery != "" {
|
if u.RawQuery != "" {
|
||||||
@@ -162,7 +165,6 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string {
|
|||||||
return "/p/" + r.token + proxyPath
|
return "/p/" + r.token + proxyPath
|
||||||
}
|
}
|
||||||
|
|
||||||
// 跨域资源
|
|
||||||
return "/p/" + r.token + "/" + u.String()
|
return "/p/" + r.token + "/" + u.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user