在Ruby on Rails中,如何获取客户端的IP地址?我希望当用户访问某个页面时,Rails会获取他们的ip地址并将其显示在屏幕上。
在我的控制器中,我尝试过:
request.remote_ip但它返回的是据我所知是IPv6的::1。我想要获取客户端的IPv4地址。我如何才能做到这一点?我只需要为每个客户端做一次,因为我只检查他们用来访问我的页面的第一个设备的ip地址。
发布于 2017-05-10 20:41:23
您可以使用以下任一方法
无论是本地代理ip地址(本地主机地址)还是not.
request.remote_ip,返回ip的request.ip更智能,并获取本地代理之外的客户端的ip地址,这是对所有可用IP地址信息的最佳解释,它将做出最佳猜测。(
request.remote_ip)确定始发IP地址。REMOTE_ADDR是标准的,但如果用户在代理后面,则会失败。HTTP_CLIENT_IP和/或HTTP_X_FORWARDED_FOR是由代理设置的,因此如果REMOTE_ADDR是代理,请检查它们。在多个链接代理的情况下,HTTP_X_FORWARDED_FOR可以是逗号分隔的列表;最后一个不受信任的地址是原始IP。
发布于 2017-05-10 20:07:50
您确定::1是不够的吗?这就是本地主机;如果您将站点发布到需要第3层传输的任何地方,它应该分别呈现适当的IPv4或IPv6地址。
简而言之,如果禁用本地IPv6堆栈,将呈现127.0.0.1。
https://stackoverflow.com/questions/43891971
复制相似问题