推荐使用开发服务器代理解决CORS问题:在vue.config.js中配置devServer.proxy,将/api/deepseek映射至DeepSeek官方API,设置changeOrigin为true并启用pathRewrite,重启服务后前端请求本地路径即可。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当在前端项目中直接调用DeepSeek API时,浏览器因同源策略拦截请求并报出CORS错误,表现为控制台显示“No 'Access-Control-Allow-Origin' header is present on the requested resource”。以下是解决此问题的步骤:
一、配置开发服务器代理(推荐用于Vue/React等前端项目)
该方法通过将API请求重写为同源请求,使浏览器不再触发跨域校验。代理仅在开发环境生效,不改变生产部署结构,且无需修改DeepSeek服务端配置。
1、在Vue项目根目录下的vue.config.js文件中添加devServer.proxy配置。
2、设置代理路径映射,例如将/api/deepseek指向DeepSeek官方API地址。
3、确保changeOrigin设为true,以修正请求头中的Host字段。
4、启用pathRewrite去除代理前缀,避免请求路径多出/api前缀。
5、重启开发服务器,前端发起请求时使用/api/deepseek/v1/chat/completions等本地路径。
二、后端代理转发(适用于Spring Boot等可控后端)
该方案将前端对DeepSeek的请求先发送至自有后端服务,由后端以服务端身份调用DeepSeek API并返回结果,完全规避浏览器CORS限制。
1、在Spring Boot控制器中定义一个接收前端请求的接口,如POST /api/deepseek/chat。
2、在该接口内部使用RestTemplate或WebClient构造带Authorization: Bearer {api_key}头的HTTPS请求。
3、将前端传入的JSON参数原样转发至https://api.deepseek.com/v1/chat/completions。
4、捕获DeepSeek响应体与状态码,以相同格式透传回前端。
5、确保后端响应头中包含Access-Control-Allow-Origin: http://localhost:3000等必要CORS字段。
三、全局CORS配置(仅限Spring Boot后端自身接口)
若后端自身暴露了供前端调用的API(非直接代理DeepSeek),可通过Spring Boot内置机制统一注入CORS响应头,使浏览器接受跨域请求。
1、创建配置类并实现WebMvcConfigurer接口。
2、重写addCorsMappings方法,在CorsRegistry中注册路径模式如/api/**。
统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。
3、调用allowedOrigins指定前端域名,禁止使用通配符*配合allowCredentials(true)。
4、显式声明allowedMethods为GET, POST, PUT, DELETE,覆盖预检请求所需方法。
5、设置maxAge(3600)以缓存预检响应,减少重复OPTIONS请求。
四、使用云函数或Serverless中间层
该方式将跨域处理逻辑剥离至第三方执行环境(如阿里云函数计算、Vercel Edge Functions),前端直连云函数URL,由其完成DeepSeek调用与响应组装,天然绕过浏览器同源限制。
1、在云平台创建HTTP触发类型的函数,运行时选择Node.js或Python。
2、函数代码中读取环境变量获取DeepSeek API Key,构造带认证头的POST请求。
3、使用fetch或requests向https://api.deepseek.com/v1/chat/completions发起调用。
4、将响应状态码、响应头(除敏感头外)及响应体完整返回给前端。
5、在函数HTTP响应头中手动添加Access-Control-Allow-Origin: https://your-frontend-domain.com。
五、Postman或curl绕过浏览器CORS(仅调试用途)
浏览器强制执行CORS检查,而命令行工具或API调试客户端不实施该策略,可用于验证DeepSeek API本身是否可用,排除前端代码逻辑干扰。
1、打开Postman,新建一个POST请求。
2、输入DeepSeek真实API地址:https://api.deepseek.com/v1/chat/completions。
3、在Headers选项卡中添加Authorization: Bearer sk-xxxxx和Content-Type: application/json。
4、在Body中选择raw → JSON,填入标准消息体结构,含messages数组与model字段。
5、点击Send,观察返回的JSON响应内容及HTTP状态码是否为200。


















