Obter o endereço Ip de um cliente em Java utilizando HTTPServletRequest
Neste post vamos mostrar como obter o endereço ip do cliente web que está acessando sua aplicação utilizando 0 HTTPServletRequest
Última atualização em: | 14379 Visualizações
Obtendo o IP do cliente com Servlet
Estando dentro de um Servlet em java conseguimos isso, através de um método da request: request.getRemoteAddr()
.
O método getRemoteAddr()
retorna uma String, contendo o endereço IP
do cliente.
String ipAddress = request.getRemoteAddr();
Da forma apresentada está correto, porém quando acessado por um cliente através de um servidor de proxy, o endereço IP
retornado será do servidor.
Para corrigir esta situação, pode ser melhorado o código, como segue abaixo:
//is client behind something?
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
Dessa forma pode ser contornado o problema, primeiro tenta obter o IP do Header
, caso não consiga obter da maneira tradicional obtem o endereConseguimos isso, através de um método da request: servletRequest.getRemoteAddr()
.
Obtendo o IP de Controller com Spring MVC
Para obter o IP de um controller com Spring MVC é praticamente da mesma forma, apenas temos que considerar obter o HTTPServletRequest a partir de uma método do controller.
Veja o exemplo:
@RequestMapping(value = "/contato", method = RequestMethod.GET)
public String getIp(HttpServletRequest request) {
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
return "page";
}
Qualquer dúvida deixe ai nós comentários! Até a próxima.
Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.