我在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的三种不同方式。
答案 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