Как да определя 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
@John Saunders - не, не винаги работи. Зависи от проксито, проксито може да включва IP на искащия клиент в тази нестандартна заглавка. - person karim79; 12.08.2009
comment
‹% out.print( request.getRemoteAddr() + ‹br›); навън. print( request.getRemoteHost() ); %› Изход: 0:0:0:0:0:0:0:1 0:0:0:0:0:0:0:1 Вече наистина не знам как да определя IP адреса на посетителя ... :(((( - person wokena; 12.08.2009

Вашите методи са правилни. Предполагам, че имате достъп до него на localhost и следователно натискате интерфейса за обратна връзка. Числата, които виждате, са IPv6 IP адресите на вашия интерфейс за обратна връзка.

Опитвам се да го ударя от друга машина.

person jsight    schedule 14.09.2009