Spaces:
Sleeping
Sleeping
| /** | |
| * 全局 API 环境配置 | |
| * 自动识别开发环境、生产环境、Tauri 桌面端、Capacitor 移动端 | |
| */ | |
| export const getBaseUrl = () => { | |
| // 1. 优先使用环境变量中配置的地址 | |
| const envBaseUrl = import.meta.env.VITE_API_BASE_URL; | |
| if (envBaseUrl) return envBaseUrl; | |
| // 2. 如果是打包环境 (Tauri 或 Capacitor),必须使用线上公网地址 | |
| if ( | |
| typeof window !== 'undefined' && | |
| (window.location.protocol === 'tauri:' || | |
| window.location.protocol === 'capacitor:' || | |
| window.location.hostname === 'localhost' === false) | |
| ) { | |
| return 'https://duqing2026-codex-ai-platform.hf.space'; | |
| } | |
| // 3. 本地开发环境且是浏览器访问,返回空字符串(走 Vite Proxy 代理) | |
| return ''; | |
| }; | |
| /** | |
| * 全局 Fetch 拦截器安装函数 | |
| */ | |
| export const setupGlobalFetch = () => { | |
| const { fetch: originalFetch } = window; | |
| const baseUrl = getBaseUrl(); | |
| if (!baseUrl) return; // 如果没有基准地址(本地开发),不进行拦截 | |
| window.fetch = async (...args) => { | |
| let [resource, config] = args; | |
| // 如果是字符串路径且以 /api 开头,则补齐基准地址 | |
| if (typeof resource === 'string' && resource.startsWith('/api')) { | |
| resource = `${baseUrl}${resource}`; | |
| } | |
| return originalFetch(resource, config); | |
| }; | |
| console.log(`[API] 全局拦截器已启动,基准地址: ${baseUrl}`); | |
| }; | |