1

我正在使用 AngularJs (v. 1.3.15) 编写 Outlook 加载项(适用于 Office 365),该加载项使用 $http.get 调用 SharePoint Online 搜索 API。我已将我的搜索调用抽象为我从主控制器调用的 Angular 工厂。

问题是 $http.get 调用从不调用回调成功或错误函数。如果我在 IE 中跟踪它,我什至看不到对 SharePoint Online 的请求通过网络传输。

在独立的 Angular SPA 中使用非常相似的代码,它工作得很好。这是一些伪代码来说明我在做什么......

应用控制器

searchFactory.search(terms).then(function(response){
    $scope.results = response.data;
},
function(error){
    $scope.status = "Error";
});

搜索工厂:

factory.search = function(terms){
    var queryStr = buildQueryStr(terms);    
    var results = $http.get(queryStr);
    return results;
}

工厂代码执行,但我从来没有看到对搜索端点的请求通过线路,并且控制器调用中的成功和错误函数都没有被触发。

JavaScript 控制台中的唯一错误是关于没有 conversationId,但鉴于我正在调用 SPO API,这似乎无关紧要。值得注意的是,调用是 X 域。

我完全被难住了。任何指针表示赞赏。

4

1 回答 1

0

根据 dev.office.com 的说法,由于同源策略,跨域请求被 Outlook Web 阻止:

http://dev.office.com/docs/add-ins/develop/addressing-same-origin-policy-limitations

我相信 SharePoint 在线 API 支持 CORS,因此您可以使用它来绕过策略。

https://msdn.microsoft.com/en-us/office/office365/howto/create-web-apps-using-cors-to-access-files-in-office-365

于 2016-06-13T02:25:41.287 回答