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

Outlook外接程序向ewsURL发起请求时触发CORS跨域错误如何解决

问题原因
  • Office 365 EWS 接口默认未对外放开跨域访问权限,浏览器同源策略会拦截前端直接发起的跨域请求,这和你是否配置外接程序清单的AppDomains节点无关:AppDomains的作用仅为允许外接程序跳转/嵌入指定域名的页面,无法解除浏览器对第三方接口的跨域限制。
  • Postman属于桌面客户端,不受浏览器同源策略约束,因此可以正常请求得到响应,该测试结果无法代表浏览器场景的可行性。
解决方案

方案1:使用官方提供的makeEwsRequestAsync接口(优先推荐)

Office.js 专门封装了EWS请求接口,走Office客户端原生通道发送请求,完全规避CORS问题,无需手动处理Token和请求头,示例代码如下:

var envelope = getSoapEnvelope(Office.context.mailbox.item.itemId);
Office.context.mailbox.makeEwsRequestAsync(envelope, function(result) {
  if (result.status === Office.AsyncResultStatus.Succeeded) {
    // 处理响应结果 result.value
  } else {
    // 处理错误
  }
});

使用该接口需要提前在外接程序清单中配置对应EWS操作的权限,例如读取邮件项需配置ReadItem级别的权限。

方案2:通过后端服务代理转发请求

如果有自定义请求逻辑的需求,可以自行搭建后端转发服务:

  1. 前端将EWS请求参数发送到你自己的后端接口
  2. 后端服务收到请求后,携带Token转发到EWS接口
  3. 后端将EWS返回的结果回传给前端
    后端服务不受浏览器同源策略限制,同时你可以在自己的后端接口配置CORS规则,允许你的https://myorg.github.io域名访问即可。
注意事项

不要尝试使用JSONP、代理浏览器插件等非常规方式绕过CORS,前者不适用于EWS的SOAP POST请求场景,后者仅能用于本地测试,无法对外交付使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:54:10