| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import { defineConfig, loadEnv } from 'vite'
- import vue from '@vitejs/plugin-vue'
- import { fileURLToPath, URL } from 'node:url'
- export default defineConfig(({ mode }) => {
- const env = loadEnv(mode, process.cwd(), '')
- const jsessionId = env.VITE_JSESSIONID || ''
- return {
- plugins: [vue()],
- resolve: {
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url))
- }
- },
- server: {
- port: 5173,
- host: '0.0.0.0',
- proxy: {
- '/api': {
- target: 'http://localhost:8080',
- changeOrigin: true
- },
- '/tba-gx': {
- target: 'http://infoshare.tbasw.cn',
- changeOrigin: true,
- configure: (proxy) => {
- proxy.on('proxyReq', (proxyReq, req, res) => {
- // 合并 cookie:优先使用 .env 中配置的 JSESSIONID,再带上浏览器已有的 cookie
- let cookies = []
- if (jsessionId) {
- cookies.push(`JSESSIONID=${jsessionId}`)
- }
- if (req.headers.cookie) {
- // 排除浏览器中可能已有的 JSESSIONID(因 Domain 不同,localhost 不会有 tbasw.cn 的 cookie)
- const browserCookies = req.headers.cookie.split(';').map(c => c.trim())
- browserCookies.forEach(c => {
- if (!c.startsWith('JSESSIONID=')) {
- cookies.push(c)
- }
- })
- }
- if (cookies.length > 0) {
- proxyReq.setHeader('Cookie', cookies.join('; '))
- }
- })
- proxy.on('proxyRes', (proxyRes, req, res) => {
- // 重写 Set-Cookie 的 Domain,使 localhost 能保存会话
- const setCookie = proxyRes.headers['set-cookie']
- if (setCookie) {
- const rewritten = Array.isArray(setCookie)
- ? setCookie.map(c => c.replace(/Domain=[^;]+/gi, 'Domain=localhost'))
- : setCookie.replace(/Domain=[^;]+/gi, 'Domain=localhost')
- proxyRes.headers['set-cookie'] = rewritten
- }
- })
- }
- }
- }
- }
- }
- })
|