我目前正在开发一个在本地机器上运行的Wolkenkit应用程序。我想从Wolkenkit应用程序上传一个文件到blob服务器(作为文档这里)。
当从服务器向https://local.wolkenkit.io:3001/发送POST请求时,Node.js给出了错误ECONNREFUSED。
我已经用另一个程序测试了POST请求,它在那里工作。知道它为什么不能从wolkenkit应用程序本身起作用吗?
谢谢!
发布于 2018-03-14 08:51:07
链接到的存储文件示例显示了将在浏览器中运行的代码,而不是后端本身。当然,两者都应该有效,但有一些小的差异,您需要注意。
修复主机名
首先,我假设在您的示例中,local.wolkenkit.io映射到127.0.0.1,这是wolkenkit的默认设置。这意味着,当您试图从Docker容器中连接到此域时,容器不会尝试调用blog存储容器,但它会停留在自己的内部。因此,首先需要修复的是主机名。
基本上,这有两个选项:您可以设置local.wolkenkit.io以便将其解析为计算机的外部IP地址。这是可行的,但相当麻烦。另一种选择是通过内部名称直接寻址负责blob存储的适当容器。内部名称是<name-of-your-app>-depot-file。因此,您需要用https://local.wolkenkit.io:3001/替换https://<...>-depot-file.wolkenkit.io:3001/。
固定港口
第二,港口错了。这是因为blob存储服务是内部运行在3000端口,外部运行在3001上。因此,您需要使用的不是https://<...>-depot-file.wolkenkit.io:3001/,而是https://<...>-depot-file.wolkenkit.io:3000/。
一旦您这样做了,您就不会再有像ECONNREFUSED这样的错误了,因为现在可以找到服务了。
解决SSL问题
第三,由于您现在使用不同的域名连接到blob存储服务,所以SSL证书不再匹配,因为它是为local.wolkenkit.io颁发的。因此,在尝试连接时,您将得到SSL错误。
解决这个问题的最简单方法是禁用任何SSL检查(尽管这也是处理此问题的最不安全的方式!)如何做到这一点取决于您正在使用的HTTP客户端模块。例如,在请求中有一个名为strictSSL的选项,您可以将其设置为false。
当然,您实际上应该做的是使用包含此域名的自定义证书,或者编写一个函数来处理证书检查并接受呈现的证书,尤其是在这种情况下。
如果你这样做的话,事情就会运转起来:-)
PS:我是wolkenkit的作者之一。非常感谢您提出这个问题,我们将在将来处理这个问题,以使存储气泡更容易。
https://stackoverflow.com/questions/49272999
复制相似问题