Estou em busca de obter o IP real do cliente em uma aplicação JSP, visto que ele pode estar atrás de um router e request.getRemoteHost() não resolve (ip local).
Como já foi discutido nesse tópico de uns anos atrás:http://www.guj.com.br/posts/list/25199.java
Saiu uma opção interessante para pingar um site e pegar o IP, só que… como o JSP está no server… a classe acabará pingando do servidor e o IP será sempre o IP do servidor (a menos que seja uma applet)…
<SCRIPT>
var ip = new java.net.InetAddress.getLocalHost();
var ipStr = new java.lang.String(ip);
document.writeln(ipStr.substring(ipStr.indexOf("/")+1));
</SCRIPT>
Em vez de document.writeln…
Você manda o IP que foi pego via ajax para o Servidor.
Faça um teste, salve esse como em um arquivo “teste.html” e abra no navegador, você irá ver que funciona.
Caso você não queira usar o ajax, você salva esse endereço em um hidden field e manda via post.
jtsato, isso nao eh lah muito boa ideia. Usar qualquer coisa dos pacotes do Java no JavaScript inicia uma JVM so pra isso - e iniciar uma JVM na maquina do cliente so pra rodar 3 linhas de JavaScript me parece meio suspeito.
1-É melhor que um applet.
2-É melhor rodar 3 linhas do que 100.
3-Pode ser feito somente no login afinal você não vai pegar o IP do cliente a cada página. Você pode guardar na sessão.
4-Você precisa de uma forma de pegar o IP direto no cliente, e se você não pegar via código vai pegar como ?
“Por favor informe seu login, senha e endereço IP para continuar.” :lol:
5-Afinal de contas, você navega o dia todo na internet, provavelmente alguma página tem um script desses e você nem percebe.