This commit is contained in:
parent
ec9360a4bb
commit
5cebd1239d
|
|
@ -117,26 +117,63 @@ export function Header() {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// export async function getWsBase() {
|
||||||
|
// let ip = await getRuntimeEnv("SUPABASE_URL");
|
||||||
|
// if (!ip) throw new Error("SUPABASE_URL 获取失败,无法构建 wsBase");
|
||||||
|
|
||||||
|
// // 判断协议
|
||||||
|
// let wsProtocol = "ws";
|
||||||
|
// if (
|
||||||
|
// typeof window !== "undefined" &&
|
||||||
|
// window.location &&
|
||||||
|
// window.location.protocol === "https:"
|
||||||
|
// ) {
|
||||||
|
// wsProtocol = "wss";
|
||||||
|
// // ✅ HTTPS + 浏览器环境下用 hostname 避免 TLS 报错
|
||||||
|
// ip = window.location.hostname;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // 拼接最终 ws 地址
|
||||||
|
// return `${wsProtocol}://${ip}/api/v1/deploy/ws`;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
import { getRuntimeEnv } from "@/lib/ipconfig";
|
||||||
|
import { headers } from "next/headers";
|
||||||
|
|
||||||
export async function getWsBase() {
|
export async function getWsBase() {
|
||||||
let ip = await getRuntimeEnv("SUPABASE_URL");
|
let ip = await getRuntimeEnv("SUPABASE_URL");
|
||||||
if (!ip) throw new Error("SUPABASE_URL 获取失败,无法构建 wsBase");
|
if (!ip) throw new Error("SUPABASE_URL 获取失败,无法构建 wsBase");
|
||||||
|
|
||||||
// 判断协议
|
|
||||||
let wsProtocol = "ws";
|
let wsProtocol = "ws";
|
||||||
|
|
||||||
if (
|
if (
|
||||||
typeof window !== "undefined" &&
|
typeof window !== "undefined" &&
|
||||||
window.location &&
|
window.location &&
|
||||||
window.location.protocol === "https:"
|
window.location.protocol === "https:"
|
||||||
) {
|
) {
|
||||||
wsProtocol = "wss";
|
wsProtocol = "wss";
|
||||||
// ✅ HTTPS + 浏览器环境下用 hostname 避免 TLS 报错
|
ip = window.location.hostname; // ✅ 浏览器下安全替换为域名
|
||||||
ip = window.location.hostname;
|
} else {
|
||||||
|
// ✅ SSR 场景
|
||||||
|
const hdrs = headers();
|
||||||
|
const forwardedProto = hdrs.get("x-forwarded-proto");
|
||||||
|
const hostHeader = hdrs.get("host");
|
||||||
|
|
||||||
|
if (forwardedProto === "https") {
|
||||||
|
wsProtocol = "wss";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hostHeader) {
|
||||||
|
ip = hostHeader.includes(":") ? hostHeader.split(":")[0] : hostHeader;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 拼接最终 ws 地址
|
// 拼接最终 ws 地址
|
||||||
return `${wsProtocol}://${ip}/api/v1/deploy/ws`;
|
return `${wsProtocol}://${ip}/api/v1/deploy/ws`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function DetailPageHeader({ data }: { data: any }) {
|
export function DetailPageHeader({ data }: { data: any }) {
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [statusText, setStatusText] = useState(data?.statusText || "加载中...");
|
const [statusText, setStatusText] = useState(data?.statusText || "加载中...");
|
||||||
|
|
|
||||||
|
|
@ -31,27 +31,77 @@
|
||||||
// } as any;
|
// } as any;
|
||||||
|
|
||||||
|
|
||||||
|
// import { getRuntimeEnv } from "../ipconfig";
|
||||||
|
|
||||||
|
// export async function getAxiosConfig() {
|
||||||
|
// let ip = await getRuntimeEnv("SUPABASE_URL"); // 直接用你 lib/ipconfig 里的方法
|
||||||
|
// if (!ip) throw new Error("SUPABASE_URL 获取失败,无法构建 axios 配置");
|
||||||
|
|
||||||
|
// let protocol = "http";
|
||||||
|
// let port = 80;
|
||||||
|
|
||||||
|
// if (typeof window !== "undefined" && window.location && window.location.protocol) {
|
||||||
|
// protocol = window.location.protocol.replace(":", "");
|
||||||
|
// port = protocol === "https" ? 443 : 80;
|
||||||
|
|
||||||
|
// // ✅ HTTPS + 浏览器时,替换 IP,避免 TLS/CORS 报错
|
||||||
|
// if (protocol === "https") {
|
||||||
|
// ip = window.location.hostname;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return {
|
||||||
|
// baseURL: `${protocol}://${ip}:${port}`, // 端口如需动态可再加参数
|
||||||
|
// method: 'post',
|
||||||
|
// timeout: 60 * 1000,
|
||||||
|
// headers: { 'Content-Type': 'application/json; charset=UTF-8' },
|
||||||
|
// responseType: 'json'
|
||||||
|
// } as const;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
import { getRuntimeEnv } from "../ipconfig";
|
import { getRuntimeEnv } from "../ipconfig";
|
||||||
|
import { headers } from "next/headers";
|
||||||
|
|
||||||
export async function getAxiosConfig() {
|
export async function getAxiosConfig() {
|
||||||
let ip = await getRuntimeEnv("SUPABASE_URL"); // 直接用你 lib/ipconfig 里的方法
|
let ip = await getRuntimeEnv("SUPABASE_URL");
|
||||||
if (!ip) throw new Error("SUPABASE_URL 获取失败,无法构建 axios 配置");
|
if (!ip) throw new Error("SUPABASE_URL 获取失败,无法构建 axios 配置");
|
||||||
|
|
||||||
let protocol = "http";
|
let protocol = "http";
|
||||||
let port = 80;
|
let port = 80;
|
||||||
|
|
||||||
if (typeof window !== "undefined" && window.location && window.location.protocol) {
|
if (typeof window !== "undefined" && window.location && window.location.protocol) {
|
||||||
|
// ✅ CSR 场景
|
||||||
protocol = window.location.protocol.replace(":", "");
|
protocol = window.location.protocol.replace(":", "");
|
||||||
port = protocol === "https" ? 443 : 80;
|
port = protocol === "https" ? 443 : 80;
|
||||||
|
|
||||||
// ✅ HTTPS + 浏览器时,替换 IP,避免 TLS/CORS 报错
|
|
||||||
if (protocol === "https") {
|
if (protocol === "https") {
|
||||||
ip = window.location.hostname;
|
ip = window.location.hostname;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// ✅ SSR 场景,自动读取 headers
|
||||||
|
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 {
|
return {
|
||||||
baseURL: `${protocol}://${ip}:${port}`, // 端口如需动态可再加参数
|
baseURL: `${protocol}://${ip}:${port}`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
timeout: 60 * 1000,
|
timeout: 60 * 1000,
|
||||||
headers: { 'Content-Type': 'application/json; charset=UTF-8' },
|
headers: { 'Content-Type': 'application/json; charset=UTF-8' },
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,32 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 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 { getRuntimeEnv } from "@/lib/ipconfig";
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
|
||||||
export async function getBaseUrl() {
|
export async function getBaseUrl() {
|
||||||
let ip = await getRuntimeEnv("SUPABASE_URL");
|
let ip = await getRuntimeEnv("SUPABASE_URL");
|
||||||
|
|
@ -28,14 +53,33 @@ export async function getBaseUrl() {
|
||||||
let protocol = "http";
|
let protocol = "http";
|
||||||
let port = 80;
|
let port = 80;
|
||||||
|
|
||||||
if (
|
if (typeof window !== "undefined") {
|
||||||
typeof window !== "undefined" &&
|
// ✅ CSR 模式
|
||||||
window.location &&
|
if (window.location.protocol === "https:") {
|
||||||
window.location.protocol === "https:"
|
protocol = "https";
|
||||||
) {
|
ip = window.location.hostname;
|
||||||
protocol = "https";
|
port = 443;
|
||||||
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}`;
|
return `${protocol}://${ip}:${port}`;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue