在Sinatra获取客户端的IP地址?

dbr*_*dbr 38 ip-address sinatra

这是一个非常简单的问题,但我在任何地方都找不到这个.

如何从Sinatra获取客户端的IP地址?

get '/' do
    "Your IP address is #{....}"
end
Run Code Online (Sandbox Code Playgroud)

mea*_*gar 69

Sinatra提供了一个request对象,它是您应该使用的客户端请求数据的接口.

使用request.ip是查找客户端IP地址的首选方法:

get '/' do
  "Your IP address is #{request.ip}"
end
Run Code Online (Sandbox Code Playgroud)

  • 应当注意,“ Request#ip”方法来自Rack,而不是Sinatra。 (2认同)

Bri*_*aro 17

无论如何我要发布答案..所以:

get '/' do
"Your IP address is #{ @env['REMOTE_ADDR'] }"
end
Run Code Online (Sandbox Code Playgroud)

Sinatra使用Rack :: Request API,因此您可以使用其中的许多内容.
也是Sinatra doc的链接 .

  • 你也可以直接做request.ip.得到"/"做; "你的IP:#{request.ip}"; 结束 (7认同)
  • 嗯,Rack :: Request API提到了一个`ip`方法,它也处理`HTTP_X_FORWARDED_FOR`,有没有办法从Sinatra调用它? (2认同)
  • 请参阅:https://github.com/chneukirchen/rack/blob/master/lib/rack/request.rb#L315 ...这里风险很大 (2认同)