Pergunta

Oi Iam redirecionar todo o tráfego para https, como sugerido na Base de dados de Conhecimento: https://openshift.redhat.com/community/kb/kb-e1044-how-to-redirect-traffic-to-https

No entanto, depois de fazer isso Iam, não é possível obter o endereço ip de usuários e, em vez de obter o endereço ip do Servidor que está redirecionando:

Abaixo está um exemplo de um Java spring MVC específicas de implementação.O currentViewedIP torna-é a servidores que fez a redirecionado para HTTPS, em vez de o IP de usuários.

 @RequestMapping(value = "/payment/", method = RequestMethod.GET)
  public String newBracqet(Model model, HttpServletRequest request) {
    String currentViewedIP = request.getRemoteAddr();
 }
Foi útil?

Solução

Se o usuário está por trás de um servidor proxy de acesso ou o seu servidor web através de um balanceador de carga (por exemplo, no de hospedagem em nuvem), o código acima irá obter o endereço IP do servidor proxy ou balanceador de carga de servidor, e não o endereço IP original de um cliente.

Para resolver isso, você deve obter o endereço IP do pedido de cabeçalho HTTP "X-Forwarded-For (XFF)".

  //is client behind something?
  String ipAddress = request.getHeader("X-FORWARDED-FOR");  
  if (ipAddress == null) {  
     ipAddress = request.getRemoteAddr();  
  }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top