从Outlook加载项中获取HTTP

时间:2018-04-03 10:45:16

标签: outlook fetch outlook-addin

我需要调用外部Web服务,以便我的插件与我们公司的Java servlet通信。我尝试使用JavaScript XMLHttpRequest

var http = new XMLHttpRequest();
http.open( "GET", url2, true );
http.onreadystatechange = function(){
    console.log( 'Data: ' + http.responseText + '\nStatus: ' + http.status );
}

并将Google的主要网站指定为白名单:

<AppDomains>
    <AppDomain>https://www.google.com/</AppDomain>
</AppDomains>

尝试它是否有效,但每次我运行它都是我得到的:

Failed to load https://www.google.com/: Redirect from 'https://www.google.com/' to
'https://www.google.es/?gfe_rd=cr&dcr=0&ei=TFjDWub9No-aX5TXg7AK' has been blocked
by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'https://localhost:3000' is therefore not allowed access.

Data: attachmentsSelectionScreen.html?recordName=A:223
Status: 0

我搜索了如何专门针对Outlook加载项制作跨源HTTP请求,然后来到Call web services from an Outlook add-in,考虑到它的名称与我需要的内容有多接近,但只发现了有关如何与Outlook交互的信息本身(创建文件夹,标记为垃圾等)。

例如,我如何从加载项向https://www.google.com发出简单请求并获取响应?

非常感谢你!

1 个答案:

答案 0 :(得分:1)

你确实是正确的方向。要从第三方Web服务检索信息,您需要:

  • 使用XMLHttpRequest$ajax等提出请求
  • 将服务网址添加到清单AppDomains列表
  • 仅使用SSL连接(https://
  • 下的服务

基本上你已经完成了,你应该能够从服务中获取信息。您可能遇到的与服务本身相关的所有其他问题,而不是来自加载项内部的调用。例如:Google会将您重定向到未在https://www.google.es列表下声明的AppDomains。服务本身可能无法提供任何信息,您可能会收到403响应。该服务可能不允许CORS请求,或者可能通过令牌,许可证等在某些授权下允许该服务。以下来源可以帮助您更多地了解该主题:

基本上这取决于服务。这就是为什么ppl通常会编写自己的服务,这将允许加载项请求,因为它们可以完全控制它。此服务可以同时对其他服务进行某些子请求以获取所需信息。