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

使用Azure Communication Calling SDK调用Start Recording API遇CORS及401错误求助

解决Azure通信服务录制API的CORS与401认证问题

核心问题本质

  • 你调用的Server Calls录制API设计为后端服务调用,不支持浏览器端跨源访问,直接前端请求必然触发CORS错误。
  • 用no-cors模式会强制浏览器屏蔽自定义请求头(包括Authorization里的Bearer Token),导致Azure服务端无法验证身份,返回401。

可行解决方案

1. 搭建后端代理服务(推荐)

在你的应用后端新增中转接口,前端调用自己的后端接口,由后端转发请求到Azure API:

  • 后端不受浏览器CORS限制,可正常携带认证令牌请求Azure服务
  • 示例Node.js(Express框架)代码:
const express = require('express');
const fetch = require('node-fetch');
const app = express();
app.use(express.json());

app.post('/start-recording', async (req, res) => {
  const { serverCallId, endpoint, apiVersion } = req.body;
  // 注意:此处需使用Azure AD生成的服务端令牌,而非用户访问令牌
  const azureServerToken = "<你的Azure服务端访问令牌>";
  try {
    const azureResponse = await fetch(
      `${endpoint}/calling/serverCalls/${serverCallId}/recordings?api-version=${apiVersion}`,
      {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${azureServerToken}`,
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({ /* 录制配置参数,如录制格式、存储位置等 */ })
      }
    );
    const responseData = await azureResponse.json();
    res.status(azureResponse.status).json(responseData);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

app.listen(3000, () => console.log('代理服务运行在3000端口'));
  • 前端只需调用自己的后端/start-recording接口,无需处理跨域和Azure认证逻辑。

2. 改用客户端SDK内置方法

检查@azure/communication-calling SDK是否提供启动录制的封装方法:

  • 客户端SDK会处理底层API调用的认证和跨域兼容逻辑,避免直接调用REST API的问题。

3. 修正令牌类型与权限

  • 你当前使用的用户访问令牌仅适用于客户端SDK的身份验证,无法调用Server Calls这类管理级API
  • 需改用Azure AD生成的服务端令牌,确保令牌拥有CommunicationServices.ManageCalls等必要权限,这是解决401的关键之一。

4. 排查Azure CORS配置(仅辅助)

即使在Azure门户配置了允许前端域名的CORS规则,该API仍可能限制浏览器访问,但可作为排查步骤:

  • 进入Azure通信服务资源 → 「CORS」设置 → 添加你的前端域名
  • 注意:此操作无法解决Server Calls API的跨源限制,仅用于排除其他CORS问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:41:01