diff --git a/apps/jingrow/frontend/vite.config.ts b/apps/jingrow/frontend/vite.config.ts index 3d78078..09581f5 100644 --- a/apps/jingrow/frontend/vite.config.ts +++ b/apps/jingrow/frontend/vite.config.ts @@ -74,17 +74,56 @@ export default defineConfig(({ mode }) => { '/api/action': { target: JINGROW_SERVER_URL, changeOrigin: true, - secure: false + secure: false, + // 确保后端 Set-Cookie 的域与路径被重写为当前前端域名与根路径,便于浏览器保存 sid/user_id + cookieDomainRewrite: { '*': '' }, + cookiePathRewrite: { '*': '/' }, + // 移除 Cookie 的 Secure 标志,因为前端可能是 HTTP 访问 + configure: (proxy, options) => { + proxy.on('proxyRes', (proxyRes, req, res) => { + const setCookieHeaders = proxyRes.headers['set-cookie'] + if (setCookieHeaders) { + // 移除所有 Set-Cookie 中的 Secure 标志 + proxyRes.headers['set-cookie'] = setCookieHeaders.map(cookie => { + return cookie.replace(/;\s*[Ss]ecure/gi, '').replace(/,\s*[Ss]ecure/gi, '') + }) + } + }) + } }, '/api/data': { target: BACKEND_URL, changeOrigin: true, - secure: false + secure: false, + cookieDomainRewrite: { '*': '' }, + cookiePathRewrite: { '*': '/' }, + configure: (proxy, options) => { + proxy.on('proxyRes', (proxyRes, req, res) => { + const setCookieHeaders = proxyRes.headers['set-cookie'] + if (setCookieHeaders) { + proxyRes.headers['set-cookie'] = setCookieHeaders.map(cookie => { + return cookie.replace(/;\s*[Ss]ecure/gi, '').replace(/,\s*[Ss]ecure/gi, '') + }) + } + }) + } }, '/jingrow': { target: BACKEND_URL, changeOrigin: true, - secure: false + secure: false, + cookieDomainRewrite: { '*': '' }, + cookiePathRewrite: { '*': '/' }, + configure: (proxy, options) => { + proxy.on('proxyRes', (proxyRes, req, res) => { + const setCookieHeaders = proxyRes.headers['set-cookie'] + if (setCookieHeaders) { + proxyRes.headers['set-cookie'] = setCookieHeaders.map(cookie => { + return cookie.replace(/;\s*[Ss]ecure/gi, '').replace(/,\s*[Ss]ecure/gi, '') + }) + } + }) + } } } },