2010-01-26 166 views
12

我曾在Ruby中这样的代码:如何在Grails控制器中获取客户端IP地址?

@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 

花了所有的IP可能会出现可能的方式照顾。例如,在我的本地开发机器上,没有代理。但是在质量保证和生产中,代理在那里,有时他们提供多个地址。

我不需要知道Groovy语法,只是哪些方法让我相当于我要求上述IP的三种不同方式。

回答

34

我想这应该是你想要什么:

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

感谢您的快速反应。 – Andrew 2010-01-26 17:59:56

+0

我试过这个,但得到:“没有这样的属性:请求”花了1h googlin这个错误,没有运气。任何人都知道如何解决此问题? – 2014-05-20 09:40:42

+1

你在控制器内部做这个吗?这是一个注入的财产,应该在那里。 – Neoryder 2014-09-02 09:35:33

相关问题