Как получить клиентский IP-адрес запроса Tornado? - PullRequest
29 голосов
/ 24 июня 2010

У меня есть RequestHandler объект для входящих post() с.Как я могу найти IP клиента, сделавшего запрос?Я просмотрел большинство методов и свойств RequestHandler и, похоже, что-то пропустил.

Ответы [ 2 ]

47 голосов
/ 24 июня 2010

RequestHandler.request.remote_ip (из экземпляра RequestHandler)

Вы можете проверить ответ как:

...
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write(repr(self.request))
...
26 голосов
/ 10 марта 2015

mykhal ответ правильный, однако иногда ваше приложение будет находиться за прокси-сервером, например, если вы используете nginx и UWSGI, и вы всегда получите что-то вроде 127.0.0.1 для удаленного IP.В этом случае вам также необходимо проверить заголовки, например:

x_real_ip = self.request.headers.get("X-Real-IP")
remote_ip = x_real_ip or self.request.remote_ip
...