Как определить IP-адрес веб-клиента (для JSP)?

Я хотел бы узнать IP-адрес клиента, который посещает мои веб-страницы.

Содержимое JSP-страницы:

<% 
out.print( request.getRemoteAddr() + "<br>");
out.print( request.getRemoteHost() ); 
%> 

Выход:

0:0:0:0:0:0:0:1
0:0:0:0:0:0:0:1

person wokena    schedule 11.08.2009    source источник


Ответы (2)


<% 
   out.print( request.getRemoteAddr() ); 
   out. print( request.getRemoteHost() ); 
%>
  • request.getRemoteAddr() возвращает IP-адрес машины, с которой вы получаете доступ к странице jsp.
  • request.getRemoteHost() возвращает имя хоста, с которого вы получаете доступ к странице jsp. Если вы получите к нему доступ с самого сервера, он вернет имя сервера.

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

<%
   out.print( request.getHeader("x-forwarded-for") );
%>
person karim79    schedule 11.08.2009
comment
Всегда ли работает x-forwarded-for? Кроме того, я не думаю, что это поможет, если клиент находится на другой стороне устройства, выполняющего преобразование сетевых адресов. - person John Saunders; 12.08.2009
comment
Имейте в виду, что это не стандартный заголовок RFC (префикс x-). - person rodrigoap; 12.08.2009
comment
@Джон Сондерс - нет, это не всегда работает. Это зависит от прокси-сервера, прокси-сервер может включать запрашивающий IP-адрес клиента в этот нестандартный заголовок. - person karim79; 12.08.2009
comment
‹% out.print( request.getRemoteAddr() + ‹br›); вне. печать (запрос.getRemoteHost()); %› Вывод: 0:0:0:0:0:0:0:1 0:0:0:0:0:0:0:1 Я правда уже не знаю, как определить IP адрес посетителя ... :(((( - person wokena; 12.08.2009

Ваши методы верны. Я предполагаю, что вы обращаетесь к нему на локальном хосте и, следовательно, используете петлевой интерфейс. Цифры, которые вы видите, являются IP-адресами IPv6 вашего интерфейса обратной связи.

Пытаюсь зайти с другой машины.

person jsight    schedule 14.09.2009