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

ReactJs调用Azure Databricks REST API遭CORS拦截的解决方案咨询

解决React调用Azure Databricks API的CORS问题

首先明确:只靠React前端代码完全解决CORS是不可能的。CORS是浏览器的同源安全策略,只要是浏览器环境发起的跨域请求,就必须遵守这个规则,前端没有办法绕过。Postman能正常调用是因为它不是浏览器,不受同源策略限制。

不过你可以试试这些不需要Node.js代理的方案:

1. 配置Azure Databricks的CORS规则(推荐生产环境使用)

这是最根本的解决办法,直接在Databricks端允许你的React应用域名访问:

  • 登录Azure Databricks控制台,进入目标Workspace
  • 打开设置 → CORS
  • 添加你的React应用部署域名(开发环境可添加http://localhost:3000)
  • 允许的HTTP方法勾选POST,允许的请求头添加Authorization、Content-Type
  • 保存设置后,前端的跨域请求就能正常通过

2. 开发环境用浏览器插件临时绕过

如果只是本地开发测试,可以安装Chrome插件「Allow CORS: Access-Control-Allow-Origin」,启用后浏览器会暂时跳过CORS检查。注意:这个方案仅适用于开发阶段,绝对不能用于生产环境。

3. 用无服务器代理转发请求(如Cloudflare Workers)

不想搭建Node服务的话,可以用Cloudflare Workers这类无服务器工具写个简单的代理脚本,让前端请求先发到Worker,再由Worker转发到Databricks API。示例Worker代码:

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const databricksUrl = 'https://你的Databricks API地址';
  const modifiedRequest = new Request(databricksUrl, {
    method: request.method,
    headers: request.headers,
    body: request.body,
    redirect: 'follow'
  });
  return await fetch(modifiedRequest);
}

部署这个Worker后,前端把请求地址改成Worker的URL即可,这样就不会触发CORS限制。

另外,你的代码里有个语法错误:JSON.stringify({job_id:jobId)的括号不匹配,应该修正为JSON.stringify({job_id:jobId}),先修复这个错误再测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:12:24