我在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
它处理了知识产权可能出现的所有可能方式.例如,在我的本地开发机器上,没有代理.但在QA和Production中,代理存在,有时它们提供多个地址.
我不需要知道Groovy语法,只是哪种方法让我相当于我要求上面的IP的三种不同方式.
我认为这应该是你想要的:
request.getRemoteAddr()
request.getHeader("X-Forwarded-For")
request.getHeader("Client-IP")