2010-01-26 10 views
12

tuve código como este en Ruby:¿Cómo se obtiene la dirección IP del cliente en un controlador Grails?

@clientipaddress = request.env["HTTP_CLIENT_IP"] 
if (@clientipaddress == nil) 
    @clientipaddress = request.env["HTTP_X_FORWARDED_FOR"] 
end 
if (@clientipaddress == nil) 
    @clientipaddress = request.env["REMOTE_ADDR"] 
end 
if (@clientipaddress != nil) 
    comma = @clientipaddress.index(",") 
    if (comma != nil && comma >= 0) 
    @clientipaddress = @clientipaddress[0, comma] 
    end 
end 

Se hizo cargo de todas las formas posibles que la IP podría aparecer. Por ejemplo, en mi máquina de desarrollo local, no hay proxy. Pero en control de calidad y producción, los proxies están ahí y, a veces, proporcionan más de una dirección.

No necesito saber la sintaxis de Groovy, simplemente qué métodos me dan el equivalente a las tres formas diferentes en que pido la IP anterior.

Respuesta

34

creo que esto debería ser lo que quieres:

  • request.getRemoteAddr()
  • request.getHeader("X-Forwarded-For")
  • request.getHeader("Client-IP")
+0

Gracias por la rápida respuesta. – Andrew

+0

Intenté esto pero obtengo: "No such such: request" ha gastado 1h googlin en este error, no tuve suerte. ¿Alguien sabe como resolver esto? –

+1

¿Estás haciendo esto dentro del controlador? Esta es una propiedad inyectada y debería estar allí. – Neoryder

Cuestiones relacionadas