diff --git a/proxy/rewriter.go b/proxy/rewriter.go index 506cdc6..466ce3b 100644 --- a/proxy/rewriter.go +++ b/proxy/rewriter.go @@ -125,6 +125,11 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string { return urlStr } + // 处理协议相对 URL(//domain.com/path) + if strings.HasPrefix(urlStr, "//") { + urlStr = r.baseURL.Scheme + ":" + urlStr + } + u, err := url.Parse(urlStr) if err != nil { return urlStr @@ -134,7 +139,7 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string { u = r.baseURL.ResolveReference(u) } - // 如果是同域名,只保留路径 + // 同域名,只保留路径 if u.Host == r.baseURL.Host { proxyPath := u.Path if u.RawQuery != "" { @@ -146,10 +151,11 @@ func (r *ContentRewriter) rewriteURL(urlStr string) string { return "/p/" + r.token + proxyPath } - // 跨域资源,需要完整 URL + // 跨域资源,完整 URL return "/p/" + r.token + "/" + u.String() } + func (r *ContentRewriter) rewriteSrcset(srcset string) string { if srcset == "" { return srcset