/** * 将服务状态里常见的 0.0.0.0 / 127.0.0.1 等替换为当前浏览器访问的主机名, * 避免在局域网用 live.local 打开页面时 iframe/新窗口指向不可达地址。 */ export function normalizeBrowserReachableHttpUrl(url: string): string { const trimmed = url.trim(); if (typeof window === "undefined" || !trimmed) return trimmed; try { const u = new URL(trimmed, window.location.origin); const h = u.hostname; const pageHost = window.location.hostname; if (h === "0.0.0.0" || h === "::" || h === "[::]") { u.hostname = pageHost || h; return u.toString(); } if ((h === "127.0.0.1" || h === "localhost") && pageHost && pageHost !== "127.0.0.1" && pageHost !== "localhost") { u.hostname = pageHost; return u.toString(); } if (h.endsWith(".local") && u.port === "8001") { return `${u.pathname || "/"}${u.search}${u.hash}`; } if (h.endsWith(".local") && pageHost && pageHost !== h) { u.hostname = pageHost; return u.toString(); } return trimmed; } catch { return trimmed; } }