import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import { fileURLToPath, URL } from "node:url"; const BAIDU_ORIGIN = "https://gushitong.baidu.com"; export default defineConfig({ plugins: [vue()], resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)), }, }, server: { proxy: { /** * WebSocket must be registered before `/baidu` so it is not swallowed. * Baidu rejects non-baidu Origins (localhost → 403); rewrite Origin here. */ "/finance-ws": { target: "wss://finance-ws.pae.baidu.com", changeOrigin: true, ws: true, rewrite: (path) => path.replace(/^\/finance-ws/, "") || "/", configure: (proxy) => { const setBaiduHeaders = (proxyReq: { setHeader: (k: string, v: string) => void; }) => { proxyReq.setHeader("Origin", BAIDU_ORIGIN); proxyReq.setHeader("Referer", `${BAIDU_ORIGIN}/`); }; proxy.on("proxyReq", setBaiduHeaders); proxy.on("proxyReqWs", setBaiduHeaders); }, }, "/baidu": { target: "https://finance.pae.baidu.com", changeOrigin: true, rewrite: (path) => path.replace(/^\/baidu/, ""), headers: { Referer: `${BAIDU_ORIGIN}/`, "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", }, }, /** 同花顺 dq 数据源(主力异动等);须排在 /jqka 前,避免前缀被吞 */ "/dq": { target: "https://dq.10jqka.com.cn", changeOrigin: true, rewrite: (path) => path.replace(/^\/dq/, ""), }, "/jqka": { target: "https://fupage.10jqka.com.cn", changeOrigin: true, rewrite: (path) => path.replace(/^\/jqka/, ""), }, "/deepseek": { target: "https://api.deepseek.com", changeOrigin: true, rewrite: (path) => path.replace(/^\/deepseek/, ""), }, "/uuquant": { target: "http://162.14.77.110:8888", changeOrigin: true, rewrite: (path) => path.replace(/^\/uuquant/, ""), }, }, }, });