搜尋

首頁  >  問答  >  主體

在 vite 中使用代理程式會將我重新導向到本機上的代理 URL,但我特別想將其僅用於後端 API 呼叫。

這是我的 vite.config.ts:

import { defineConfig } from 'vitest/config'
import vue from '@vitejs/plugin-vue'
import { quasar, transformAssetUrls } from '@quasar/vite-plugin'

const path = require('path');

// https://vitejs.dev/config/
export default defineConfig({
  test: {
    globals: true
  },
  plugins: [
    vue({
      template: {
        transformAssetUrls
      }
    }),
    quasar({
      sassVariables: 'src/assets/scss/quasar-variables.sass'
    })
  ],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, './src'),
    },
  },
  server: {
    proxy: {
      '/socket': {
        target: 'wss://abc-website.com:4221/',
        changeOrigin: true,
        ws: true,
        rewrite: (path) => path.replace('^/socket', ''),
      },
      '/streaming/': {
        target: 'https://abc-website.com/',
        changeOrigin: true,
      },
      '/': {
        target: 'https://abc-website.com/',
        changeOrigin: true,
        secure: false,
        ws: true
      },
    }
  }
})

每當載入我的應用程式時,它都會在我的 locahost 連接埠上造訪 https://abc-website.com。

我只想將上面的網址用於後端 api 調用,例如 https://abc-webite.com/api/auth。

此外,在 vite.config.ts 中設定代理程式後,我將 baseURL 設定為「api/」。

此外,在稍作更改後,它會呼叫 REST api,例如 https://localhost:3000/auth,我應該是 https://locahost:3000/api/auth

Vite 代理似乎對我來說無法正常工作。

P粉412533525P粉412533525247 天前532

全部回覆(1)我來回復

  • P粉426780515

    P粉4267805152024-03-26 18:26:17

    我認為你可以這樣做:

    server: {
      proxy: {
        // ... your other proxies
        '/api': {
          target: 'https://abc-website.com/',
          changeOrigin: true,
          secure: false,
          ws: true,
          rewrite: (path) => path.replace(/^\/app/, ''),
        },
      }
    }

    然後,您對localhost:3000/api/my-endpoint 等網站的所有請求都應代理到https://abc-website.com/my-endpoint# 。您無法代理所有「基本」請求,因為它們被保留用於服務其他所有內容、所有資產、index.html 等,但我也很友善

    回覆
    0
  • 取消回覆