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

Excel Task Pane add-in to show content from external source

我正在尝试构建一个 Excel/Word 任务窗格加载项,它应该显示我们站​​点的内容。 content/data 以 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);
        }

  });

};

正如您从上面的代码中了解到的那样,我只是在检查是否可以连接到外部源,但我在控制台中得到 "Access Denied"。

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

请帮忙

是的,您可以从 Office 网络加载项(例如 Excel/Word 任务窗格)发出 Ajax HTTP 请求。它们的工作方式与在普通网页上的工作方式完全相同,只是我们有一个额外的要求,即使用 "https" 而不是 "http" 来访问端点。

如果没有有关您调用的实际端点的信息,我无法确定您的具体问题的原因。首先在普通网页上尝试您的代码,然后使用网络浏览器正常访问它。一旦你有了这个工作,然后将一个加载项指向页面。这应该可以解决您的问题,但如果您仍然遇到完全相同的代码在普通浏览器中运行但在加载项中失败的问题,请告诉我们。

您提到了 'external',所以我敢打赌 http://addons.mysite.com/ 不是为您的 Web 插件提供服务的域。 要使其正常工作,您必须检查几项内容。

  1. 使用 Https 服务。正如 Michael 所写,请确保您使用 https。 Mixed content(http 和 https 的混合)被大多数服务器阻止,Office 网络加载项只能通过 https 提供。
  2. 确保您的 PHP 网络 api 支持 CORS。 我不是 PHP 专家所以这里是 small link
  3. 尝试将 https://addons.mysite.com 指定为 AppDomain 沙盒 iFrame 仅允许在同一域(您用来为您的网络插件提供服务的域)上进行请求和导航。但是您可以指定一些例外情况 see here。它适用于导航,但我不确定它是否适用于 XHR...
  4. 如果第 3 步不起作用,请尝试使用此处描述的 JSON/P 技术 JSON/P with Office add-ins