【问题标题】:Access localhost from web application从 Web 应用程序访问 localhost
【发布时间】:2018-04-18 07:01:55
【问题描述】:

我有一个软件(Tally)在我的本地机器上运行。该软件可以作为服务器运行(http://localhost,端口号 9000)。可以使用此 URL 进行 API 调用以导入和导出数据。 我可以从远程网络服务器中运行的应用程序向这个本地服务器发出 http 请求吗?

我尝试从网络服务器这样做:

var request = require('request');
var options = {
    uri: 'http://192.168.0.3:9000',
    method: 'GET'
};
request(options, function (error, response, body) {
    if (error) {
        console.log("Invalid Network Details");
    } else {
        if (response.statusCode == 200) {
            console.log(body);
        } else {
            console.log("Unauthorized Access!!");
        }
    }
});

我得到一个输出“无效的网络详细信息”

【问题讨论】:

  • Invalid network Details 是一个硬编码字符串,如果error 中有任何值,则您已编写代码输出该字符串。看看error 看看它说了什么怎么样?
  • “我可以从运行在远程 Web 服务器中的应用程序向这个本地服务器发出 http 请求吗?” — 有多远程?是在同一个局域网吗?
  • 应用程序正在网络服务器中运行。我想使用公开的 api 调用将一些数据从本地计算机导入服务器
  • 网络服务器和本地计算机是否在同一个局域网上? “远程”有多遥远?
  • 不在同一个局域网中。软件正在我的桌面上运行。它公开了一些 API。我想从我的网络应用程序中调用它

标签: localhost webserver tally


【解决方案1】:

我不了解计数应用程序,但在我看来,您应该在防火墙中打开 9000 端口(如果您的网络服务器位于不同的网络中,则在路由器中打开)。 在您的应用程序中,您必须使用本地计算机的 ip(如果您在同一网络中)或本地计算机的公共地址(如果您的计算机和您的网络服务器是在不同的网络上)。

PD。您的公共地址通常每 x 次更改一次(可能是一天或一个月),所以我会使用 noip o 之类的东西。

【讨论】:

  • 我已经使用 ipaddress 编辑了代码。你能检查代码吗?
  • 您的网络服务器与您的本地计算机在同一个网络上吗?如果不是 IP 地址192.168.0.3,您应该使用的是您的 isp 分配给您本地计算机网络的地址(您可以在此处查看whatismyipaddress.com/es/mi-ip)不要忘记在路由器和防火墙中打开端口,正如我所说之前。
【解决方案2】:

你说

不在同一个局域网

http://192.168.0.3:9000

该 IP 地址位于 private IPv4 address space 中。无法(直接)通过 Internet 访问它。

您需要为服务器提供一个面向公众的 IP 地址(可能通过在路由器上配置端口转发),然后将您的请求定向到该地址。

【讨论】:

    猜你喜欢
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2016-02-29
    相关资源
    最近更新 更多