vue:vite 代理服务器 server: proxy 配置

Vite 代理服务器(Proxy)的配置通常用于开发环境,以解决跨域请求等问题。以下是一个详细的配置步骤:

通过以上步骤,你就可以在 Vite 项目中配置代理服务器,以便在开发过程中方便地访问后端服务。

  1. 找到 Vite 配置文件‌:

    • Vite 的配置文件通常为项目根目录下的 vite.config.js 或 vite.config.ts。如果项目中没有这个文件,可以手动创建一个。
  2. 配置代理‌:

    • 在 vite.config.js 或 vite.config.ts 文件中,通过 export default 导出一个配置对象,并在该对象中添加 proxy 属性。proxy 属性是一个对象,用于配置各个代理规则。
  3. 定义代理规则‌:

    • 每个代理规则都是一个以目标URL为键的对象。该对象可以包含以下属性:
      • target:代理的目标地址,即后端服务的实际地址。
      • changeOrigin:是否改变源地址。通常设置为 true,以便代理服务器能够正确识别请求的来源。
      • rewrite:重写规则,用于修改请求的路径或查询参数等。
      • headers:自定义请求头,用于在代理请求中添加额外的HTTP头。
  4. 示例配置‌:

    以下是一个简单的 Vite 代理配置示例:
    // vite.config.js
    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    
    // https://vite.dev/config/
    export default defineConfig({
      plugins: [vue()],
      server: {
        proxy: {
          '/api': {
            target: 'http://localhost:8000', // 后端服务地址
            changeOrigin: true, // 是否改变源地址
            rewrite: (path) => path.replace(/^\/api/, '')
          }
        }
      }    
    })

    在上面的示例中,所有以 /api 开头的请求都会被代理到 http://localhost:8000,并且请求路径中的 /api 前缀会被移除。

  5. 重启 Vite‌:npm run dev 

    • 配置完成后,需要重启 Vite 开发服务器,以便使代理配置生效。
  6. 使用代理‌:

    • 在前端代码中,你可以像访问本地资源一样访问代理的后端服务。例如,如果你配置了代理 /api 到 http://localhost:8000,你可以在前端代码中通过 fetch('/api/data') 来访问 http://localhost:8000/data
  7. 注意事项‌:

    • 在设置代理后,建议在开发过程中禁用其他不必要的网络请求,以减少潜在的安全风险。
    • 在生产环境中,通常不会使用代理,而是直接配置后端服务以允许跨域请求,或使用其他安全措施来保护网络环境。
    • 如果以上简单的 proxy 配置不能满足您的需求,还可以安装 http-proxy 中间件
      npm install http-proxy-middleware --save-dev
      npm show http-proxy-middleware
      http-proxy-middleware@3.0.3 | MIT | deps: 6 | versions: 88
      The one-liner node.js proxy middleware for connect, express, next.js and more
      https://github.com/chimurai/http-proxy-middleware#readme
    • 使用 http-proxy-middleware 示例:
      import { defineConfig } from 'vite'
      import vue from '@vitejs/plugin-vue'
      import { createProxyMiddleware } from 'http-proxy-middleware'
      
      // vite.config.js
      export default defineConfig({
        plugins: [vue()],
        server: {
          proxy: createProxyMiddleware({
            context: ['/api', '/auth'],
            target: 'http://localhost:8000', // 后端服务地址
            changeOrigin: true // 是否改变源地址
          })
        }    
      })
      

       
Vue3 中,如果你想要通过 Vite 配置文件 `vite.config.ts` 来代理 WebSocket 连接,Vite 提供了一个 `serverMiddleware` 功能,允许你在服务器中间件中设置自定义的请求处理。对于 WebSocket 的代理,你可以创建一个处理 WebSocket 连接的函数,并将其添加到 `viteServer.ws` 数组中。 以下是一个简单的示例,展示如何在 `vite.config.ts` 中配置 WebSocket 代理: ```typescript import { createServer } from 'http' import { createVueApp } from 'vue' import App from './App.vue' const app = createVueApp(App) // 创建 WebSocket 代理函数 async function wsProxy(ws: WebSocket, req: any) { // 如果需要的话,可以在这里对请求做额外的处理 // 比如检查是否已经登录、设置WebSocket路径等 ws.url = '/your-backend-websocket-endpoint'; // 设置代理的目标URL await ws.handshake(req) ws.on('message', async (message) => { // 处理接收到的消息 console.log(`Received message: ${message}`) try { const response = await yourBackendAPI(message); ws.send(response); // 发送回应给客户端 } catch (error) { ws.terminate(); } }); ws.on('close', () => { console.log('WebSocket connection closed') }); } // Vite server 配置 export default defineConfig({ build: {}, server: { middleware: [ { path: /^\/ws/, // 匹配所有以/ws开头的URL handler: createServer((req, res) => { const ws = new WebSocket(req.url.replace(/^ws:/i, 'wss:' if process.env.NODE_ENV === 'production' else 'ws:')); // 使用ws或wss取决于生产环境 wsProxy(ws, req); ws.pipe(res); ws.on('upgrade', (ws) => wsProxy(ws, req)); }), }, ], }, plugins: [], }) ``` 在这个例子中,`wsProxy` 函数会在客户端尝试连接WebSocket时被调用,它会将连接升级并转发到指定的后台WebSocket端点。记得替换 `/your-backend-websocket-endpoint` 为实际的WebSocket服务地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值