2017-07-25 85 views
2

我试图从我的Outlook加载项向第三方服务发送POST Ajax请求,但无论我尝试了什么,我收到了Error: Access is denied和状态0(请求永远不会打中服务器)。发送来自Office加载项的POST AJAX请求

假设我们在outlook的后面运行IE9或8,我尝试了像https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest这样的旧学校黑客。

$.ajax({ 
    url: endpoint, 
    data: JSON.stringify({'1':'2'}), 
    // headers: {'X-Requested-With': 'XMLHttpRequest'}, 
    contentType: 'text/plain', 
    type: 'POST', 
    dataType: 'json', 
    error: function(xhr, status, error) { 
     // error 
     } 
}).done(function(data) { 
    // done 
    }); 

是否还有更多我需要实现?因为我添加我的域名以显示AppDomain属性。

干杯

回答

5

下面需要做的事情,以发送请求给第三方服务...

  • 添加服务的URI来AppDomain列表(你已经做到了。)
  • 的服务必须有SSL端点; “https://your.domain”必须包含在“AppDomain”条目中(请参阅上文)
  • 该服务必须允许CORS请求用于您的应用程序(托管Outlook App URI)域或任何域。这取决于服务创建者是否允许或不允许通过Ajax进行客户端应用程序连接。

由于观察您的代码,我注意到您发送的是JSON对象,但将内容类型设置为“text/plain”。联系服务创建者以获取他们接受请求的数据类型的信息。通常服务允许“application/json”,但不是纯文本。

+1

值得注意的另一点值得注意的是,Outlook for Windows使用的是IE11,但加载项跨平台运行,因此假设您的用户正在运行哪个浏览器/引擎是不安全的。 –