Excel任务窗格加载项显示来自外部源的内容

我正在尝试构buildExcel / Word任务窗格外接程序,该外接程序应显示来自我们网站的内容。 内容/数据以XML格式传递。

我试图做的是以下几点:

Office.initialize = function (reason) { $(document).ready(function () { app.initialize(); $.support.cors = true; var data = ''; $.ajax({ type: "GET", contentType: "application/json; charset=utf-8", url: 'http://addons.mysite.com/excel-taskpane-data.php', data: data, dataType: "json", success: onQuerySuccess, error: onQueryError }); function onQuerySuccess(res, statusText) { console.log('success!!' + res.statusText); } function onQueryError(res, statusText){ console.log('failed!!' + res.statusText); } }); }; 

正如你从上面的代码可以理解的,我只是检查是否可以连接到外部源,但我在控制台中“访问被拒绝”。

我不确定应该如何从外部请求数据,以及是否有可能?

请帮忙

你提到的“外部”,所以我敢打赌http://addons.mysite.com/不是服务于你的网页加载项的域名。 为了使它工作,你必须检查几件事情。

  1. 用Https服务。 正如Michael所写的,确保您使用https。 混合内容 (混合的http和https)被大多数服务器阻止,而Office web加载项只能通过https提供。
  2. 让您的PHP Web API支持CORS。 我不是PHP专家,所以这里是一个小链接
  3. 尝试指定https://addons.mysite.com作为AppDomain沙盒iFrame只允许请求和导航在同一个域(你用来为你的networking插件)。 但是你可以在这里指定一些例外。 它与导航工作,我不知道它与XHR …
  4. 如果第3步不起作用,请尝试使用JSON / P技术,如JSON / P和Office加载项所述

是的,您可以从Office Web加载项(如Excel / Word任务窗格)发出Ajax HTTP请求。 它们的工作方式与普通网页上的完全相同,除了我们有使用“https”而不是“http”来访问端点的附加要求。

没有关于您打电话的实际terminal的信息,我无法确定您的具体问题的原因。 首先在普通的网页上试试你的代码,并通过网页浏览器来访问它。 一旦你有这个工作,然后指向一个加载项的页面。 这应该可以解决你的问题,但是如果你仍然有一个问题,即在一个普通的浏览器中工作的代码完全相同,并且加载失败,请告诉我们。