Ceci est une question très simple, mais je ne trouve aucune mention de cela, n'importe où ..Obtenez l'adresse IP du client dans Sinatra?
Comment puis-je obtenir l'adresse IP du client dans Sinatra?
get '/' do
"Your IP address is #{....}"
end
Ceci est une question très simple, mais je ne trouve aucune mention de cela, n'importe où ..Obtenez l'adresse IP du client dans Sinatra?
Comment puis-je obtenir l'adresse IP du client dans Sinatra?
get '/' do
"Your IP address is #{....}"
end
Sinatra fournit un request
object, qui est l'interface avec les données de demande client que vous devriez utiliser.
L'utilisation request.ip
est la méthode préférée pour trouver l'adresse IP du client:
get '/' do
"Your IP address is #{request.ip}"
end
Il est à noter que la méthode 'Request # ip' vient de Rack, pas de Sinatra. – skalee
je rentrais à poster la réponse de toute façon .. si:
get '/' do
"Your IP address is #{ @env['REMOTE_ADDR'] }"
end
Sinatra utilise le Rack::Request API, vous pouvez donc utiliser beaucoup de choses disponibles en elle.
Egalement un lien vers le Sinatra doc's.
Hm, l'API Rack :: Request mentionne une méthode 'ip', qui gère aussi le' HTTP_X_FORWARDED_FOR ', est-ce qu'il y a un moyen de l'appeler depuis Sinatra? – dbr
vous devriez être capable de faire juste # {@env ['HTTP_X_FORWARDED_FOR']} Je n'ai jamais testé cela, donc je ne suis pas positif. –
vous pouvez faire request.ip directement, aussi bien. obtenir "/" faire; "votre adresse IP: # {request.ip}"; fin – bantic
Err, oh, il est dans '@env [ 'REMOTE_ADDR']' - J'avais vérifié la sortie 'de @ de env.inspect' en cherchant "127.0.0.1", mais il montrait l'adresse IPv6 ':: 1' donc je l'ai manqué ... N'importe qui ne hésitez pas à poster cela afin que je puisse l'accepter sans l'attente de 48 heures .. (rep libre !: P) – dbr