Pregunta

Hola, IAM redirigiendo todo mi tráfico a HTTPS, como se sugiere en la Base de Conocimiento: https://openshift.redhat.com/community/kb/kb-e1044-how-to-redirect-traffic-to-https

Sin embargo, después de hacer esto, no puede obtener la dirección IP de los usuarios y, en su lugar, obtener la dirección IP del servidor que se redirige:

A continuación se muestra un ejemplo de una implementación específica de Java Spring MVC.El DRENTVEEDIP se convierte en los servidores que se redirigieron a HTTPs en lugar de los usuarios IP.

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

¿Fue útil?

Solución

Si el usuario está detrás de un servidor proxy o accede a su servidor web a través de un equilibrador de carga (por ejemplo, en el alojamiento de la nube), el código anterior obtendrá la dirección IP del servidor proxy o el servidor de equilibrador de carga, no la dirección IP originalde un cliente.

Para resolverlo, debe obtener la dirección IP del encabezado HTTP de la solicitud "X-Forwards-for (XFF)".

  //is client behind something?
  String ipAddress = request.getHeader("X-FORWARDED-FOR");  
  if (ipAddress == null) {  
     ipAddress = request.getRemoteAddr();  
  }

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top