You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已开启Vite全局CORS仍无法访问外部HTTPS源的问题求助

解决Vite+React中第三方API的CORS问题

你的问题核心是混淆了Vite开发服务器的CORS配置和前端跨域请求第三方API的解决方案:你配置的server.cors是控制外部请求你的Vite开发服务器时的跨域规则,而不是解决前端直接请求第三方API的CORS限制——第三方API服务器没有允许你的前端域名跨域,所以浏览器会拦截请求。

正确的解决方案是用Vite的代理功能,让Vite开发服务器替你转发请求(服务器间请求不受浏览器CORS限制),具体步骤如下:

1. 修改Vite配置文件(vite.config.js)

重点配置server.proxy,将前端的请求转发到目标API地址:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import * as fs from 'fs';

export default defineConfig({
  server: {
    proxy: {
      // 匹配以/api开头的请求
      '/api': {
        target: 'https://gegevensmagazijn.tweedekamer.nl',
        changeOrigin: true,
        // 把请求路径中的/api前缀去掉,转发到目标地址
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    },
    // 保留你的HTTPS配置
    https: {
      key: fs.readFileSync('./.cert/key.pem'),
      cert: fs.readFileSync('./.cert/cert.pem'),
    }
  },
  define: {
    'process.env': {}
  },
  plugins: [react()],
})

2. 修改前端的Fetch请求

将原来的绝对URL改为相对路径,以/api开头:

const response = await fetch("/api/OData/v4/2.0/persoon");
const person = await response.json();
console.log(person);

为什么这样能解决问题?

  • 前端请求的是你的Vite开发服务器(同源),不会触发浏览器CORS检查;
  • Vite服务器收到请求后,会替你转发到目标第三方API(服务器间请求不受CORS限制);
  • 第三方API返回的结果会被Vite服务器转发回前端,完成整个请求流程。

关于之前的server.cors配置

这个配置是用来控制外部服务请求你的Vite开发服务器时的跨域规则(比如另一个前端项目调用你的开发接口),和你请求第三方API的场景无关,所以设置origin: '*'或true都无法解决你的问题。

内容的提问来源于stack exchange,提问作者Frans Polman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:21:18