Как получить IP-адрес локальной сети, используя страницу jsp?

#java #javascript #jsp #jakarta-ee

#java #javascript #jsp #джакарта-ee

Вопрос:

У меня есть приложение, написанное на JSP и странице сервлета. Всякий раз, когда я пытаюсь отследить IP-адрес пользователя, он возвращает глобальный IP-адрес компьютера (адрес прокси-сервера), а не IP-адрес локальной сети этого компьютера. Итак, как получить IP-адрес локальной сети компьютера пользователя. Пожалуйста, помогите мне решить эту проблему…

Комментарии:

1. Находится ли ваш веб-сервер за пределами этой локальной сети?

2. @deceze: Не могли бы вы, пожалуйста, высказать свои соображения по поводу обоих случаев?. Но мой сервер расположен за пределами локальной сети. Что произойдет, если мой сервер расположен внутри локальной сети?

Ответ №1:

Попробуйте это для локальной машины…

1- InetAddress thisIp = InetAddress.getLocalHost(); примером результата будет abcNamePc/172.11.0.115 то, что он предоставит вам как имя информационного компьютера, так и IP

чтобы получить IP-адрес удаленной машины, если вы знаете имя машины, используйте это

 InetAddress address = InetAddress.getByName("name of the machine");
  

или

 String sIPAddress = request.getRemoteAddr();   //or getRemoteHost()
  

получает удаленный IP-адрес клиента.

это работает.

Ответ №2:

По необходимости ваш веб-сервер будет видеть только IP-адрес компьютера, который отправил вам запрос. Если пользователь находится за прокси-сервером, это будет прокси-сервер, делающий запрос от имени пользователя (отсюда «прокси»). У вас нет возможности отследить источник запроса дальше, поскольку он может прийти откуда угодно. Только прокси-сервер будет знать, и пока он не сообщит вам, вы не узнаете.

Прокси может отправлять дополнительный HTTP-заголовок типа X-Forwarded-For , и в этом случае он сообщает вам, от чьего имени он действует. Этот IP-адрес, в свою очередь, также может быть прокси, хотя вы не можете знать. Кроме того, эта информация не поддается проверке и может быть подделана, поэтому вам в любом случае не следует на нее полагаться. Единственный проверяемый IP-адрес, который вы получаете, — это тот, с которого ваш веб-сервер получил запрос и отправит ответ.

Если бы ваша машина находилась внутри локальной сети, у вас а) изначально не возникло бы этой проблемы и б) если бы она была, вы могли бы запросить что-либо, например, по имени машины. Это сильно зависело бы от сетевой инфраструктуры, хотя и не поддается обобщению.