Rails:获取客户端IP地址
在 Rails 中,获取连接到服务器的客户端 IP 地址的最佳方法是什么?
这是我发现的两种方法:
request.remote_ip
request.env['HTTP_X_REAL_IP']
In Rails, what's the best way to get the ip address of the client connecting to the server?
Here are two ways I've found:
request.remote_ip
request.env['HTTP_X_REAL_IP']
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我只会使用简单且有效的
request.remote_ip
。您有什么理由需要其他方法吗?请参阅:在本地Rails开发环境中获取真实IP地址
对于其他一些事情,您可以使用客户端服务器 IP 执行此操作。
I would just use the
request.remote_ip
that's simple and it works. Any reason you need another method?See: Get real IP address in local Rails development environment
for some other things you can do with client server ip's.
request.remote_ip
是对所有可用 IP 地址信息的解释,它将做出最佳猜测。如果您直接访问变量,您将承担以正确的优先顺序测试它们的责任。代理引入了许多标头,这些标头创建具有不同名称的环境变量。request.remote_ip
is an interpretation of all the available IP address information and it will make a best-guess. If you access the variables directly you assume responsibility for testing them in the correct precedence order. Proxies introduce a number of headers that create environment variables with different names.使用命令获取客户端IP:
Get client ip using command:
我发现
request.env['HTTP_X_FORWARDED_FOR']
在request.remote_ip
返回127.0.0.1
的情况下也非常有用I found
request.env['HTTP_X_FORWARDED_FOR']
very useful too in cases whenrequest.remote_ip
returns127.0.0.1
对于任何感兴趣并使用较新的 Rails 和 Devise gem 的人:Devise 的“可跟踪”选项包括用户表中的 current/last_sign_in_ip 列。
For anyone interested and using a newer rails and the Devise gem: Devise's "trackable" option includes a column for current/last_sign_in_ip in the users table.