2014-09-30 88 views
1

任何人都可以幫助我。我想知道是否有辦法在我創建的中間件中獲得客戶端IP。獲取客戶端IP內部中間件本地主機

我已經試過:

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

,並沒有這些回報什麼。

我已經進入我的中間件後,他們都:

在我的application.rb中

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

請誰能幫助我?

謝謝。

回答

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"] 
+0

感謝您的回答,但這個鍵不在localhost中工作。我認爲沒有辦法。但是,謝謝。 – 2014-10-02 14:49:17