I have a RequestHandler
object for incoming post()
s. How can I find the IP of the client making the request? I've browsed most of RequestHandler
's methods and properties and seem to have missed something.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
RequestHandler.request.remote_ip
(from RequestHandler's instance)
you can inspect the response like:
...
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write(repr(self.request))
...
回答2:
mykhal's answer is right, however sometimes your application will be behind a proxy, for example if you use nginx and UWSGI and you will always get something like 127.0.0.1
for the remote IP. In this case you need to check the headers too, like:
remote_ip = self.request.headers.get("X-Real-IP") or \
self.request.headers.get("X-Forwarded-For") or \
self.request.remote_ip
Edit Oct 17th, 2019: include the commonly used header X-Forwarded-For
which is used by AWS load balancers amongst others.