我需要调用外部 Web 服务,以便我的外接程序与我们公司的 Java servlet 进行通信。我尝试使用 JavaScriptXMLHttpRequest
:
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 请求,并找到了从 Outlook 加载项调用 Web 服务,考虑到它的名称与我所需要的非常相似,但只找到了有关如何与 Outlook 本身交互的信息(创建文件夹、标记为垃圾邮件等)。
例如,我如何提出一个简单的请求https://www.google.com从我的加载项并获取响应?
非常感谢!
确实,你的方向是正确的。要从第 3 方网络服务检索信息,您需要:
- 提出请求
XMLHttpRequest
or $ajax
, etc.
- 将服务 URL 添加到清单中
AppDomains
list
- 仅使用 SSL 连接下的服务(
https://
)
基本上你已经完成了,你应该能够从服务中获取信息。您可能遇到的所有其他问题都与服务本身有关,而不是来自加载项内部的调用。例如:谷歌将您重定向到https://www.google.es
未根据您的声明进行声明AppDomains
列表。该服务本身可能无法提供任何信息,您可能会得到403
回复。该服务可能不允许CORS
请求或可以通过令牌、许可证等在某些授权下允许它。以下来源可以帮助您获得有关该主题的更多信息:
- 解决 Office 加载项中的同源策略限制
- 在 Office 加载项中授权外部服务
基本上这取决于服务。这就是为什么人们通常编写自己的服务,这将允许加载项请求,因为他们对其拥有完全控制权。该服务同时可能会向其他服务发出某些子请求以获取所需的信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)