vite 中配置 proxy 代理 https

在做前端开发的时候,我们通常是启动一个 node server 方便调试代码,并且能够支持热更新,但后端提供的 api 接口往往在另一台服务器上,这时候,就需要用到代理(proxy)。

HTTP 代理

对于普通的 http 代理,我们只需要配置代理规则即可

// vite.config.ts

export default defineConfig({
  // 服务器配置
  server: {
    port: 8080,
    open: true,
    http: true,
    ssr: false,
    // 设置代理
    proxy: {
      '/api': {
        target: 'http://192.168.1.12:8081/api',
        changeOrigin: true,
        rewrite: path => path.replace(/^\/api/, '')
      },
    }
  }
})

上面这段 vite 配置,意思是在本地启动一个 node server, 端口是 8080,这样 npm run dev 后就可以在浏览器中通过 localhost:8080 访问网站,并且当调用以 localhost:8080/api 开头的接口时,都会自动代理到 192.168.1.12:8081/api

HTTPS 代理

如果代理目标是 HTTPS,就需要忽略安全证书校验,否则会出现接口状态一直 pending。忽略安全证书校验需要在 proxy 下添加 secure 字段,告诉 proxy 是否开启安全证书校验,默认是开启。

{
  proxy: {
    "/api": {
      target: 'https://example.com',
      changeOrigin: true,
      secure: false,
      headers: {                  
        Referer: 'https://example.com'
      }
    }
  }
}

代理 WebSocket

WebSocket 使用的是 ws 协议,如果希望同时代理 WebSocket 接口,只需要设置 ws: true 即可。

{
  proxy: {
    "/api": {
      target: 'http://example.com',
      changeOrigin: true,
      secure: false,
      ws: true,
      headers: {                  
        Referer: 'http://example.com'
      }
    }
  }
}

参考

Keywords

vite proxy https