// import { getRuntimeEnv } from "@/lib/ipconfig"; // export async function getBaseUrl() { // let ip = await getRuntimeEnv("SUPABASE_URL"); // if (!ip) throw new Error("SUPABASE_URL 获取失败,无法构建 baseUrl"); // let protocol = "http"; // if ( // typeof window !== "undefined" && // window.location && // window.location.protocol === "https:" // ) { // protocol = "https"; // ip = window.location.hostname; // } // return `${protocol}://${ip}`; // } // import { getRuntimeEnv } from "@/lib/ipconfig"; // import { headers } from 'next/headers' // export async function getBaseUrl() { // let ip = await getRuntimeEnv("SUPABASE_URL"); // if (!ip) throw new Error("SUPABASE_URL 获取失败,无法构建 baseUrl"); // let protocol = "http"; // let port = 80; // if ( // typeof window !== "undefined" && // window.location && // window.location.protocol === "https:" // ) { // protocol = "https"; // ip = window.location.hostname; // port = 443; // } // return `${protocol}://${ip}:${port}`; // } import { getRuntimeEnv } from "@/lib/ipconfig"; import { headers } from 'next/headers'; export async function getBaseUrl() { let ip = await getRuntimeEnv("SUPABASE_URL"); if (!ip) throw new Error("SUPABASE_URL 获取失败,无法构建 baseUrl"); let protocol = "http"; let port = 80; if (typeof window !== "undefined") { // ✅ CSR 模式 if (window.location.protocol === "https:") { protocol = "https"; ip = window.location.hostname; port = 443; } } else { // ✅ SSR 模式,补充逻辑 const hdrs = headers(); const forwardedProto = hdrs.get("x-forwarded-proto"); const hostHeader = hdrs.get("host"); if (forwardedProto) { protocol = forwardedProto; } if (hostHeader) { ip = hostHeader; if (hostHeader.includes(":")) { const parts = hostHeader.split(":"); ip = parts[0]; port = parseInt(parts[1]); } else { port = (protocol === "https") ? 443 : 80; } } } return `${protocol}://${ip}:${port}`; }