Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 ActionController:request.remote\u ip和request.remote\u addr之间的差异_Ruby On Rails_Client_Request_Ip Address_Actioncontroller - Fatal编程技术网

Ruby on rails Rails ActionController:request.remote\u ip和request.remote\u addr之间的差异

Ruby on rails Rails ActionController:request.remote\u ip和request.remote\u addr之间的差异,ruby-on-rails,client,request,ip-address,actioncontroller,Ruby On Rails,Client,Request,Ip Address,Actioncontroller,在ActionController源中,本地请求定义如下: def local_request? #:doc: request.remote_addr == LOCALHOST && request.remote_ip == LOCALHOST end 在我的应用程序中,如果请求来自特定的IP范围,我希望使用不同的逻辑。request.remote\u addr和request.remote\u ip之间有什么区别,我应该使用哪一个?似乎是这样的情况,remote\u

在ActionController源中,本地请求定义如下:

def local_request? #:doc:
    request.remote_addr == LOCALHOST && request.remote_ip == LOCALHOST
end

在我的应用程序中,如果请求来自特定的IP范围,我希望使用不同的逻辑。
request.remote\u addr
request.remote\u ip
之间有什么区别,我应该使用哪一个?

似乎是这样的情况,
remote\u addr
按原样返回
remote\u addr
环境变量的值,而
remote_ip
将根据
HTTP_X_FORWARDED_FOR
HTTP_CLIENT_ip
变量的存在来调整此值,例如当您的客户端通过代理转发时可能会出现的情况


本地\u请求进行双重检查?
只是一种确定用户来自本地机器的方法,而不是简单地通过本地代理从其他地方转发。

我是
远程\u ip
当前实现的作者,它包括检查ip欺骗攻击,并正确处理多个
X-Forwarded-For
头。不过有一个很大的警告:只有一些RubyWeb服务器支持多个头,所以值可能仍然是错误的

我写了测试最流行的Ruby应用服务器的结果,您可能想检查重复的头是否对您的应用程序有影响