У меня есть объект RequestHandler
для входящих post()
s. Как я могу найти IP клиента, делающего запрос? Я просмотрел большинство методов и свойств RequestHandler
и, похоже, что-то пропустил.
Как я могу получить IP-адрес клиента запроса Tornado?
Ответ 1
RequestHandler.request.remote_ip
(из экземпляра RequestHandler)
вы можете проверить ответ как:
...
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write(repr(self.request))
...
Ответ 2
Ответ mykhal правильный, однако иногда ваше приложение будет находиться за прокси-сервером, например, если вы используете nginx и UWSGI, и вы всегда получите что-то вроде 127.0.0.1
для удаленного IP-адреса. В этом случае вам также необходимо проверить заголовки, например:
remote_ip = self.request.headers.get("X-Real-IP") or \
self.request.headers.get("X-Forwarded-For") or \
self.request.remote_ip
Изменить 17 октября 2019 года: включить широко используемый заголовок X-Forwarded-For
, который используется балансировщиками нагрузки AWS среди прочих.