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

Svelte使用第三方API遇到CORS问题,前端修改及代理均无效如何解决?

针对Svelte项目第三方接口CORS限制的落地方案

前置常识

  • 前端代码自行设置Access-Control-Allow-Origin这类响应头完全无效,CORS是浏览器针对前端跨域请求的安全策略,只能通过服务端/代理层解决

开发环境修复(解决之前代理不生效问题)

目前主流Svelte项目均基于Vite构建,按以下配置内置代理即可,不需要额外搭建独立服务:

// vite.config.js 配置文件
import { defineConfig } from 'vite'
import { svelte } from '@sveltejs/vite-plugin-svelte'

export default defineConfig({
  plugins: [svelte()],
  server: {
    proxy: {
      // 自定义请求前缀,所有以/api开头的请求都会被代理到目标接口
      '/api': {
        target: 'https://gdchallengelist.com/api/v1/',
        changeOrigin: true,
        // 去掉前缀后转发到目标接口,比如请求/api/list 实际会转发到https://gdchallengelist.com/api/v1/list
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }
})

配置完成后,前端所有请求直接写相对路径即可,比如fetch('/api/xxx'),不要直接调用第三方接口的全路径。

生产环境修复

方案1:SvelteKit项目优先用服务端加载(最快10分钟搞定)

如果用的是SvelteKit框架,直接在服务端加载函数中发起请求,服务端请求不存在浏览器CORS限制:

// 示例:src/routes/+page.server.js
export async function load({ fetch }) {
  // 直接调用第三方全路径接口即可
  const res = await fetch('https://gdchallengelist.com/api/v1/你的实际接口路径')
  const apiData = await res.json()
  // 数据会自动传递到对应页面组件
  return { apiData }
}

页面组件中直接取值即可:

<!-- 对应页面svelte文件 -->
<script>
  export let data;
  const { apiData } = data;
</script>
<!-- 直接渲染数据即可 -->

方案2:普通Svelte项目搭极简中转代理

如果是无服务端的普通Svelte项目,写几行代码搭建一个极简代理服务,部署到任意Node环境即可:

// proxy.js 代理服务代码
const express = require('express')
const { createProxyMiddleware } = require('http-proxy-middleware')
const app = express()

// 允许前端跨域调用本代理服务
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*')
  next()
})

// 转发所有请求到目标第三方接口
app.use('/api', createProxyMiddleware({
  target: 'https://gdchallengelist.com/api/v1/',
  changeOrigin: true,
  pathRewrite: {'^/api' : ''}
}))

app.listen(3000, () => console.log('代理服务启动在3000端口'))

部署完成后,前端请求替换为你的代理服务地址即可,比如fetch('你的代理服务地址/api/xxx')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 17:24:03