1

Я разрабатываю веб-приложение на своем рабочем столе, и оно работает на порту 80. Я могу получить доступ к приложению с моего ноутбука, подключенного к локальной сети, введя IP-адрес локальной сети 192.168.1.8. Теперь мое приложение отправляет перенаправление после входа в систему, но мой ноутбук предполагает, что конечный адрес - localhost/login. Если я вручную ввожу IP-адрес и URI для какой-либо страницы, это показывает, что я вошел в систему, поэтому он работает как положено. Итак, почему перенаправление предполагает localhost?

Обе мои машины основаны на Linux. Ноутбук является Chrome OS. Я использую nginx, который проксирует нестатические файловые запросы на порт 8080.

$ cat /etc/hosts
127.0.0.1 locahost
192.168.1.8 desktop
$ hostname
desktop

Перенаправление отправляется из Jetty с помощью HttpServletResponse.sendRedirect()

TL; DR:

Laptop: Request http://192.168.1.8/login
Desktop: Respond with redirect to /index
Laptop: Redirect request to http://localhost/index

Requesting http://desktop/login doesn't work.

3 ответа3

1

Нигде не существует ничего, что бы неявно перенаправляло на localhost . Что-то в рамках или приложении явно делает это.

0

При подключении к любому адресу локального интерфейса подключение выполняется с 127.0.0.1 (локальный адрес обратной связи). Это не требует перенаправления. Имя этого адреса - localhost, как вы найдете в /etc /hosts. Многие приложения проверяют другие локальные интерфейсы на наличие имени и используют его в предпочтении localhost.

0

Jetty предварительно присваивает каждому относительному URL свой корневой домен (в Apache он называется "Имя сервера", я не знаю о Jetty), я полагаю: отсюда и "localhost". Поэтому вам нужно заменить localhost на что-то, что имеет смысл для обоих компьютеров:

Вы можете сделать домен вроде «example.com» своим рутом в Jetty, определить его как корень и добавить его в файл hosts на ноутбуке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .