【问题标题】:Get client IP inside Middleware Localhost在中间件本地主机中获取客户端 IP
【发布时间】:2014-09-30 17:47:14
【问题描述】:

谁能帮帮我。我想知道是否有任何方法可以在我创建的中间件中获取客户端 IP。

我试过了:

env["REMOTE_ADDR"]
env["HTTP_X_FORWARDED_FOR"]

这些都没有返回任何内容。

在他们之后我已经进入了我的中间件:

在我的 application.rb 中

config.middleware.insert_after ActionDispatch :: Head, "MyMiddleware".

谁能帮帮我?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby http middleware


    【解决方案1】:

    request.env

    request.env
    => {"GATEWAY_INTERFACE"=>"CGI/1.1",
     "PATH_INFO"=>"/events/1",
     "QUERY_STRING"=>"",
     "REMOTE_ADDR"=>"127.0.0.1",
     "REMOTE_HOST"=>"127.0.0.1",
     "REQUEST_METHOD"=>"GET",
     "REQUEST_URI"=>"http://localhost:3000/events/1",
     "SCRIPT_NAME"=>"",
     "SERVER_NAME"=>"localhost",
     "SERVER_PORT"=>"3000",
     "SERVER_PROTOCOL"=>"HTTP/1.1",
     "SERVER_SOFTWARE"=>"WEBrick/1.3.1 (Ruby/2.2.0/2014-09-17)",
     "HTTP_HOST"=>"localhost:3000",
     "HTTP_USER_AGENT"=>"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:32.0) Gecko/20100101 Firefox/32.0",
     "HTTP_ACCEPT"=>"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
     "HTTP_ACCEPT_LANGUAGE"=>"en-US,en;q=0.5",
     "HTTP_ACCEPT_ENCODING"=>"gzip, deflate",
     "HTTP_DNT"=>"1",
     "HTTP_COOKIE"=>"nameofapp-example_session=Qnh5ZMQVN5V2821f",
     "HTTP_CONNECTION"=>"keep-alive",
     "HTTP_CACHE_CONTROL"=>"max-age=0",
    ...
    

    这些都是您可以使用的键。在您的情况下,它将是这两个之一

    request.env["REMOTE_ADDR"]
    request.env["REMOTE_HOST"]
    

    【讨论】:

    • 感谢您的回答,但此键在 localhost 中不起作用。我认为没有办法。不过谢谢。
    猜你喜欢
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 2017-10-15
    • 2019-01-14
    • 2010-09-10
    • 2010-11-22
    相关资源
    最近更新 更多