如何在Grails控制器中获取客户端IP地址?

时间:2010-01-26 16:37:29

标签: grails

我在Ruby中有这样的代码:

@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可能出现的所有可能方式。例如,在我的本地开发机器上,没有代理。但在QA和Production中,代理存在,有时它们提供多个地址。

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

2 个答案:

答案 0 :(得分:37)

我认为这应该是你想要的:

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

答案 1 :(得分:0)

//action in controller 
def postentry (accountno) {
def fulldata = request.reader.text 
def remoteadd = request.getRemoteAddr()
println "ip request  "+remoteadd
...
}

结果--- ip请求0:0:0:0:0:0:0:1