Fix dashboard redirects leaking internal port
Build & Deploy / Build & Push Docker Image (push) Successful in 2m54s
Test / Type Check (all packages) (push) Successful in 53s
Build & Deploy / Deploy to VPS (push) Successful in 4s
Test / API Unit Tests (push) Successful in 48s
Test / Homepage Unit Tests (push) Successful in 43s
Test / Storefront Unit Tests (push) Successful in 40s
Test / Admin Unit Tests (push) Successful in 42s
Test / Dashboard Unit Tests (push) Successful in 41s
Test / API Integration Tests (push) Successful in 1m1s

This commit is contained in:
root
2026-07-02 13:34:28 -04:00
parent 7c1bd2d0c0
commit 9c11f3660d
2 changed files with 14 additions and 3 deletions
+11
View File
@@ -38,16 +38,27 @@ function resolveProxyUrl(req: NextRequest, pathname: string): URL {
if (forwardedHost && !isInternalHost(forwardedHost)) {
url.host = forwardedHost
url.protocol = (forwardedProto ?? 'http') + ':'
if (!hasExplicitPort(forwardedHost) || isInternalAppPort(url.port)) url.port = ''
} else if (!isInternalHost(req.nextUrl.host)) {
url.host = req.nextUrl.host
url.protocol = req.nextUrl.protocol
if (!hasExplicitPort(req.nextUrl.host) || isInternalAppPort(url.port)) url.port = ''
} else {
url.host = storefrontOrigin.host
url.protocol = storefrontOrigin.protocol
if (!hasExplicitPort(storefrontOrigin.host) || isInternalAppPort(url.port)) url.port = ''
}
return url
}
function hasExplicitPort(host: string): boolean {
return /^[^:]+:\d+$/.test(host)
}
function isInternalAppPort(port: string): boolean {
return ['3000', '3001', '3002', '3004', '4000'].includes(port)
}
function isInternalHost(host: string | null): boolean {
if (!host) return false
const hostname = host.split(':')[0]?.toLowerCase()