fix: proxy web device resources transparently

This commit is contained in:
Yoilun
2026-05-15 11:12:27 +08:00
parent bd49486304
commit 7498960ba3
4 changed files with 146 additions and 15 deletions

View File

@@ -76,13 +76,16 @@ var (
func ShouldRewriteBody(contentType string) bool {
contentType = strings.ToLower(contentType)
return strings.Contains(contentType, "text/html") ||
strings.Contains(contentType, "text/css")
strings.Contains(contentType, "text/css") ||
strings.Contains(contentType, "javascript")
}
func RewriteText(body, proxyPrefix string, targetURL *url.URL, contentType string) string {
contentType = strings.ToLower(contentType)
isHTML := strings.Contains(contentType, "text/html")
isScript := strings.Contains(contentType, "javascript")
if strings.Contains(contentType, "text/html") {
if isHTML {
body = webProxyQuotedAttrPattern.ReplaceAllStringFunc(body, func(match string) string {
parts := webProxyQuotedAttrPattern.FindStringSubmatch(match)
if len(parts) != 4 {
@@ -100,7 +103,9 @@ func RewriteText(body, proxyPrefix string, targetURL *url.URL, contentType strin
rewritten := rewriteURL(parts[2], proxyPrefix, targetURL)
return strings.Replace(match, parts[2], rewritten, 1)
})
}
if isHTML || isScript {
body = webProxyQuotedURLPattern.ReplaceAllStringFunc(body, func(match string) string {
parts := webProxyQuotedURLPattern.FindStringSubmatch(match)
if len(parts) != 3 {
@@ -120,7 +125,7 @@ func RewriteText(body, proxyPrefix string, targetURL *url.URL, contentType strin
return "url(" + parts[1] + rewritten + parts[1] + ")"
})
if strings.Contains(contentType, "text/html") {
if isHTML {
body = injectRuntime(body, proxyPrefix)
}