| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- /*
- * @Author: code4eat awesomedema@gmail.com
- * @Date: 2024-04-09 18:07:34
- * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2026-04-17 15:39:05
- * @FilePath: /KC-MiddlePlatform/config/proxy.ts
- * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
- */
- const proxy: { [key: string]: any } = {
- dev: {
- // WebSocket 专用代理,避免被 /gateway 先匹配成 HTTP
- '/gateway/centerSys/websocket': {
- // 本地开发按实际网关地址转发
- target: 'ws://dev.kcim.cn',
- changeOrigin: true,
- ws: true,
- // 后端实际路径不带 /gateway 前缀
- // pathRewrite: { '^/gateway': '' },
- // 将 query 中的 token 写入 Header,后端只认 Header
- onProxyReq(proxyReq: any, req: any) {
- proxyReq.on('error', (err: any) => {
- console.error('WS proxyReq error:', err?.message || err);
- });
- try {
- const url = new URL(req.url, 'http://placeholder');
- const token = url.searchParams.get('token');
- if (token) {
- proxyReq.setHeader('token', token);
- }
- } catch (e) {
- // ignore
- }
- },
- onProxyReqWs(proxyReq: any, req: any) {
- proxyReq.on('error', (err: any) => {
- console.error('WS proxyReqWs error:', err?.message || err);
- });
- try {
- const url = new URL(req.url, 'http://placeholder');
- const token = url.searchParams.get('token');
- if (token) {
- proxyReq.setHeader('token', token);
- }
- } catch (e) {
- // ignore
- }
- },
- onError(err: any, req: any, res: any) {
- console.error('WS proxy error:', err?.message || err);
- try {
- res.writeHead(502);
- res.end('WS proxy error');
- } catch (_) { }
- },
- },
- '/gateway': {
- //target: 'http://47.96.149.190',
- target: 'http://120.27.235.181',
- //target: 'http://platform.pre.bs.qjczt.com:5000',
- changeOrigin: true,
- timeout: 30000,
- proxyTimeout: 30000,
- onProxyReq(proxyReq: any) {
- proxyReq.on('error', (err: any) => {
- console.error('Gateway proxyReq error:', err?.message || err);
- });
- },
- onError(err: any, req: any, res: any) {
- console.error('Gateway proxy error:', err?.message || err);
- try {
- res.writeHead(502);
- res.end('Gateway proxy error');
- } catch (_) { }
- },
- // pathRewrite: { '^/master': '' },
- },
- '/api': {
- target: 'http://120.27.235.181:8088',
- changeOrigin: true,
- timeout: 30000,
- proxyTimeout: 30000,
- onProxyReq(proxyReq: any) {
- proxyReq.on('error', (err: any) => {
- console.error('API proxyReq error:', err?.message || err);
- });
- },
- onError(err: any, req: any, res: any) {
- console.error('API proxy error:', err?.message || err);
- try {
- res.writeHead(502);
- res.end('API proxy error');
- } catch (_) { }
- },
- // 本地开发:对 /api/se 开头的请求不走代理,交由 umi mock 处理
- bypass: function (req: any) {
- if (req && req.url && req.url.startsWith('/api/se')) {
- return req.url;
- }
- return undefined;
- },
- },
- '/ai': {
- target: 'http://192.168.0.120:5003',
- //target: 'http://116.62.47.88:5003',
- changeOrigin: true,
- pathRewrite: { '^/ai': '' },
- selfHandleResponse: true,
- onProxyRes: function onProxyRes(proxyRes: any, req: any, res: any) {
- proxyRes.on('data', function (data: any) {
- res.write(data);
- });
- proxyRes.on('end', function () {
- res.end();
- });
- proxyRes.on('error', function (err: any) {
- console.error('AI ProxyRes error:', err);
- res.end();
- });
- res.on('error', function (err: any) {
- console.error('AI Res error:', err);
- });
- },
- onError(err: any, req: any, res: any) {
- console.error('AI proxy error:', err?.message || err);
- try {
- res.writeHead(502);
- res.end('AI proxy error');
- } catch (_) { }
- },
- },
- },
- mock: {
- '/master/': {
- target: 'http://localhost:8000',
- changeOrigin: true,
- pathRewrite: { '^': '' },
- },
- },
- };
- export default proxy;
|