1

我正在尝试构建应显示我们网站内容的 Excel/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);
        }

  });

};

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

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

请帮忙

4

2 回答 2

1

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

  1. 使用 Https 服务。正如迈克尔所写,请确保您使用 https。大多数服务器都阻止混合内容(http 和 https 的混合),并且 Office web 加载项只能使用 https 提供。
  2. 确保您的 PHP Web api 支持 CORS。我不是 PHP 专家,所以这里有一个小链接
  3. 尝试将https://addons.mysite.com指定为 AppDomain 沙盒 iFrame 仅允许在同一域(用于为您提供 Web 插件服务的域)上的请求和导航。但是您可以指定一些例外情况,请参见此处。它适用于导航,我不确定它适用于 XHR ......
  4. 如果步骤 3 不起作用,请尝试使用 JSON/P 技术,如此处所述 JSON/P with Office 加载项
于 2016-02-08T22:05:43.353 回答
0

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

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

于 2016-02-08T21:47:06.887 回答