【问题标题】:Office 2016 add-in communicating to http://localhostOffice 2016 加载项与 http://localhost 通信
【发布时间】:2020-03-23 16:09:08
【问题描述】:

我想构建一个可以离线使用的 Microsoft Office 2016 插件(至少在在线使用一次之后)。

我知道我们可以像普通浏览器一样缓存 HTML、js 等,我曾考虑使用本地 HTTP 服务器(不随插件分发),以便插件可以与之通信。但是做这样的事情:

var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", "http://localhost:8080", true);
xmlHttp.onreadystatechange = function(aEvt) {
  if (xmlHttp.status == 200) {
    console.log(xmlHttp.responseText);
  } else {
    console.log("Status:" + xmlHttp.statusText);
  }
};
xmlHttp.send();

这失败了:

JavaScript 运行时错误:访问被拒绝。

如果我使用 HTTPS URL(到适当的服务器),它可以工作。

我认为插件只允许 HTTPS 而不允许 HTTP 请求?

与计算机中的另一个进程进行 Office 2016 外接程序而不是通过 Internet 上的外部 HTTPS 进行通信的最佳方式是什么?

是否可以放松清单上的安全性(我还没有找到如何)并允许对localhost的HTTP请求?

【问题讨论】:

  • 你是怎么解决的?
  • 遗憾的是我没有修复它。

标签: office-js


【解决方案1】:

我认为插件只允许 https 而不允许 http 请求?

正确。根据Office Add-ins XML manifest 上的文档,所有 URL 都必须是 SSL 安全的 (HTTPS)

什么是最好的通信方式,而不是通过 Internet 上的 https 外部,Office 2016 加载项与计算机中的另一个进程?

我可以通过两种方式查看...

  • 使用生成的自签名证书对您有用。
  • 创建适当的 https 服务以与加载项进行通信。从您的服务通过 http(不安全)通信到您喜欢的任何地方。我不建议使用此解决方案,因为它根本不安全。

是否可以放松清单上的安全性(我还没有找到如何)并允许对 localhost 的 http 请求?

没有。

【讨论】:

  • 据我所知,Office 2016 不应接受 localhost 的自签名证书 - 除非在开发机器中,我们将此证书(或签名 CA)添加为有效证书。你的解决方案是这样想的吗? (在开发机器上,而不是用户机器上)。
【解决方案2】:

对我有用的是单击解决方案并转到属性选项卡并将 SSL Enabled 从 True 更改为 False,并且每当您打算生成 prod 构建时将 SSL 标志设置为 True。

【讨论】:

    【解决方案3】:

    您基本上需要在浏览器中导入自签名证书,但如果您正在寻找用于开发目的的快速修复,请转到 chrome://flags 在您的 chrome 浏览器中并允许加载无效证书。 enter image description here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 2021-12-12
      • 1970-01-01
      • 2016-04-20
      相关资源
      最近更新 更多