Выполнение вызовов API из браузера в локальном соединении без фиксированного IP - PullRequest
0 голосов
/ 29 апреля 2020

Я использую веб-сервер Nginx на устройстве, имеющем два разных сетевых интерфейса. Я хочу обслуживать приложение React на порту 80, которое выполняет вызовы API на сервер API на другом порту того же устройства. Я настроил Nginx для прослушивания через порт 80, и он правильно обслуживает приложение React на обоих интерфейсах. Однако делать вызовы API сложнее.

Если бы у меня был только один интерфейс с фиксированным IP, я бы установил этот IP в качестве адреса сервера API в приложении React, и все было бы хорошо. Однако при наличии нескольких интерфейсов приложение React не определяет, какой интерфейс использовался для его обслуживания. В результате я t не знает, какой IP-адрес сервера API.

Этот вопрос также действителен для устройства, которое имеет только один интерфейс, но чей IP-адрес изменяется синхронно. Nginx обслуживает веб-страницу правильно, независимо от IP-адреса, но приложению React необходимо знать IP-адрес для выполнения вызовов API.

Я понимаю, что распространенным решением является назначение домена серверу API, но в моем сценарии подключение к устройству происходит только в локальной сети.

Решения, которые я рассмотрел:

  1. Наличие фиксированного IP на обоих интерфейсах и nginx обслуживают различные приложения React для каждого из интерфейсов. Приложения будут такими же, за исключением параметра адреса сервера API. Вероятно, это излишнее.
  2. Запрос пользователя ввести IP-адрес в приложении React при работе в браузере. Это не очень удобно для пользователя.

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

1 Ответ

0 голосов
/ 30 апреля 2020

Поскольку приложение React обслуживается в локальной сети и не использует домен, оно запрашивается в браузере с использованием IP-адреса устройства в качестве href. В результате приложение может получить IP-адрес устройства с помощью метода javascript window.location.href и использовать его в качестве адреса сервера API.

...