Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-request.env[';HTTP#ux#uForwarded#ufor';]和request.remote#uIP之间的差异_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails-request.env[';HTTP#ux#uForwarded#ufor';]和request.remote#uIP之间的差异

Ruby on rails Rails-request.env[';HTTP#ux#uForwarded#ufor';]和request.remote#uIP之间的差异,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在对现有RoR应用程序添加一些更改,并发现request.env['HTTP\u X\u FORWARDED\u FOR']返回了nil。我把它改为request.remote_ip,得到了正确的客户端ip地址 为什么request.remote\u ip在request.env['HTTP\u X\u FORWARDED\u FOR']返回nil?他们之间有什么区别?我如何使request.env['HTTP\u X\u FORWARDED\u']工作,我应该使用哪一个(最佳实践) 通常,

我正在对现有RoR应用程序添加一些更改,并发现
request.env['HTTP\u X\u FORWARDED\u FOR']
返回了
nil
。我把它改为request.remote_ip,得到了正确的客户端ip地址


为什么
request.remote\u ip
request.env['HTTP\u X\u FORWARDED\u FOR']
返回
nil
?他们之间有什么区别?我如何使
request.env['HTTP\u X\u FORWARDED\u']
工作,我应该使用哪一个(最佳实践)

通常,您应该使用
request.remote\u ip
。它是Rails引入的一种方法,尝试使用各种方法收集连接的实际远程IP,包括在适当的情况下评估
request.env['HTTP\u X\u FORWARDED\u']


最后,
request.remote_IP
返回的IP在中计算。这比尝试自己收集IP更通用,因为它考虑了代理阶段,可以设置各种HTTP头。

X-Forwarded-For被HTTP代理和负载平衡器使用