IP-модуль, возвращающий разные IP-адреса - PullRequest
0 голосов
/ 18 июня 2019

Я использую ip-библиотеку npm.У меня есть два файла конфигурации, один для React и один для Node, для одного и того же приложения.

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

Это возвращает разные IP-адреса для файла конфигурации React (внутри папки src-127.0.0.1) и Nodeфайл сервера (вне папки src - IPv4-адрес).

Проблема в том, что я уверен, что раньше я выполнял один и тот же код, и он дал мне одинаковые IP-адреса для обоих, как тогда я могполучить доступ к моим веб-страницам.Мне нужен тот же ip, чтобы делать запросы к моему бэкэнду узла, я не могу позволить себе его в работе.Есть ли другие определенные способы сделать это?

1 Ответ

1 голос
/ 18 июня 2019

Вы получаете разные результаты ip, потому что вызов метода 2 ip.address() использует разные сетевые интерфейсы.

Чтобы ip.address() возвращал идентичный результат, вы можете передать имя сетевого интерфейса в качестве первого параметра, например, en0:

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

p.s. Чтобы получить все текущие имена сетевых интерфейсов, можно использовать os.networkInterfaces().

Обновление: OP пытается получить IP-адрес в коде React на стороне браузера. Это миссия невыполнима. В противном случае это принесло бы огромные проблемы с безопасностью.

Обновление 2: OP не хочет сохранять IP-адрес конечной точки в коде внешнего интерфейса по соображениям безопасности, а также не хочет сначала извлекать IP-адрес (проблема с загрузкой сети). В этом случае вы можете сделать прокси на сервере. Все, что знает интерфейс, взаимодействует с текущим сервером, обмен данными осуществляется сервером как:

Браузер <-> Сервер <-> IP различных конечных точек

Шаги:

  1. Сервер (на котором размещен код веб-интерфейса) получает запрос от браузера
  2. Проверка сервера, какая конечная точка будет использоваться для этого клиента
  3. Сервер отправляет запрос на конкретную конечную точку
  4. Сервер получает ответ от конечной точки
  5. Сервер возвращает ответ в предыдущем шаге в браузер
...