ip模块返回不同的ip地址

时间:2019-06-18 13:00:35

标签: node.js reactjs localhost ip

我正在使用npm的ip库。 我有两个配置文件,一个用于React,一个用于Node,用于同一应用程序。

const ip = require('ip');
console.log(ip.address());

这将为React配置文件(在src文件夹-127.0.0.1内)和节点服务器文件(在src文件夹外-IPv4地址)返回不同的IP地址。

问题是,我可以肯定的是,我早些时候运行了完全相同的代码,并且当我能够访问自己的网页时,这两个代码都为我提供了相同的IP地址。我需要相同的IP来向节点后端发出请求,但在生产中我买不起。还有其他确定的方法吗?

1 个答案:

答案 0 :(得分:1)

由于2个方法调用ip.address()使用不同的网络接口,因此您将获得不同的ip结果。

要使ip.address()返回相同的结果,可以将网络接口名称作为第一个参数,例如en0

const ip = require('ip');
console.log(ip.address('en0'));

p.s。要获取所有当前的网络接口名称,可以使用os.networkInterfaces()

更新:OP尝试在浏览器端的React代码中获取IP地址。这是不可能完成的任务。否则,将带来巨大的安全问题。

更新2:出于安全原因,OP不想将端点IP地址存储在前端代码中,也不想首先获取IP地址(网络开销问题)。在这种情况下,您可以在服务器中创建代理。所有前端都知道正在与当前服务器进行交互,数据交换由服务器以以下方式传递:

浏览器<->服务器<->各种端点IP

步骤是:

  1. 服务器(托管前端代码)从浏览器获取请求
  2. 服务器检查该客户端将使用哪个端点
  3. 服务器将请求发送到特定端点
  4. 服务器从端点获得响应
  5. 服务器将上述步骤中的响应返回给浏览器