我正在使用npm的ip库。 我有两个配置文件,一个用于React,一个用于Node,用于同一应用程序。
const ip = require('ip');
console.log(ip.address());
这将为React配置文件(在src文件夹-127.0.0.1内)和节点服务器文件(在src文件夹外-IPv4地址)返回不同的IP地址。
问题是,我可以肯定的是,我早些时候运行了完全相同的代码,并且当我能够访问自己的网页时,这两个代码都为我提供了相同的IP地址。我需要相同的IP来向节点后端发出请求,但在生产中我买不起。还有其他确定的方法吗?
答案 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
步骤是: