const _toString = Object.prototype.toString; /** * 开发模式,获取代理配置 * 注: 若配置项VUE_APP_BASE_API包含协议、域名[IP]、端口[可选],开发模式则默认配置代理 */ export function getProxyConfig(env, insertYuxpProxy) { let baseApi = env.VITE_APP_BASE_AUTH || ''; // 应用服务前缀URL let proxyPrefix = env.VITE_APP_PROXY_API || ''; // 代理API前缀 const match = /^(https?:\/\/[0-9a-z.-]+)(:[0-9]+)?([/0-9a-z.]+)?/i; // 匹配URL(协议+域名+端口) // 可数组配置多个 proxyPrefix = proxyPrefix.split(','); if (_toString.call(baseApi) === '[object String]') { baseApi = baseApi.split(',').filter((api) => { return match.test(api); }); } let devServerProxy = { '^/zzh-api': { target: 'http://39.106.34.227', changeOrigin: true, logLevel: 'debug', rewrite: (path) => { return path.replace(/^\/zzh-api/, ''); }, }, '^/zzh': { target: 'http://39.106.34.227', changeOrigin: true, logLevel: 'debug', rewrite: (path) => { return path.replace(/^\/zzh/, ''); }, }, '^/rest': { target: 'http://39.106.34.227', changeOrigin: true, }, '^/api/infra_be/': { target: ' http://dohb.exocr.com', changeOrigin: true, }, '^/agentfile': { target: 'http://10.192.72.11:9000/static', changeOrigin: true, rewrite: (path) => { return path.replace(/^\/agentfile/, ''); }, }, '^/ai-manage-web': { target: 'http://210.12.198.139:9090', changeOrigin: true, }, '^/ai-oca': { target: 'http://210.12.198.139:9090', changeOrigin: true, }, '^/ai-trans-analysis': { target: 'http://210.12.198.139:9090', changeOrigin: true, }, '^/ai-trans-mgr': { target: 'http://210.12.198.139:9090', changeOrigin: true, }, }; const l = baseApi.length - 1; if (l > -1) { // VUE_APP_BASE_API代理配置演示,/dev-proxy-api/xxx-api/* => https://172.16.20.92:8102/xxx-api/* // 详见: https://cli.vuejs.org/config/#devserver-proxy if (Array.isArray(proxyPrefix)) { proxyPrefix.forEach((item, idx) => { const matchResult = match.exec(baseApi[idx > l ? l : idx]); devServerProxy[`^(?!.*package\/api\/)(/(?!src)[a-zA-Z-]+)*${item}.*`] = { target: `${matchResult.input}`, // + (matchResult[3] || '')}`, // 协议+域名 changeOrigin: true, }; }); } } insertYuxpProxy(devServerProxy); const proxyShuffleApi = (env.VITE_APP_PROXY_SHUFFLE || '').split(','); proxyShuffleApi.forEach((item) => { // 正则表达式,添加给定代理的前缀服务模式匹配 业务功能香瓜接口代理到相应后端 devServerProxy[`^(?!.*package\/api\/)(/(?!src)[a-zA-Z-]+)*${item}.*`] = { target: env.VITE_APP_BASE_API, }; }); devServerProxy = JSON.stringify(devServerProxy) == '{}' ? false : devServerProxy; console.log('配置代理', devServerProxy); return devServerProxy; }