Comment obtenir L'adresse IP client d'une demande Tornado?

j'ai un RequestHandler objet entrant post()s. Comment puis-je trouver le IP du client qui fait la demande? J'ai parcouru la plupart des RequestHandler'propriétés et des méthodes et semblent avoir manqué quelque chose.

27
demandé sur M.J 2010-06-24 18:34:19

2 réponses

RequestHandler.request.remote_ip (à partir de RequestHandler l'exemple)

vous pouvez inspecter la réponse comme:

...
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write(repr(self.request))
...
46
répondu mykhal 2010-06-24 15:58:13

la réponse de mykhal est juste, cependant parfois votre application sera derrière un proxy, par exemple si vous utilisez nginx et UWSGI et vous obtiendrez toujours quelque chose comme 127.0.0.1 pour L'IP distante. Dans ce cas, vous devez vérifier les en-têtes aussi, comme:

x_real_ip = self.request.headers.get("X-Real-IP")
remote_ip = x_real_ip or self.request.remote_ip
24
répondu 3k- 2015-11-26 13:24:13