我如何获得龙卷风请求的客户端IP?

问题描述 投票:30回答:2

我有一个RequestHandler对象用于传入的post()。如何找到发出请求的客户端的IP?我浏览了RequestHandler的大多数方法和属性,似乎错过了一些东西。

python tornado
2个回答
49
投票

RequestHandler.request.remote_ip(来自RequestHandler的实例)

您可以检查响应,例如:

...
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write(repr(self.request))
...

29
投票

mykhal的答案是正确的,但是有时您的应用程序将位于代理之后,例如,如果您使用nginx和UWSGI,并且对于远程IP总是会得到类似127.0.0.1的信息。在这种情况下,您还需要检查标题,例如:

remote_ip = self.request.headers.get("X-Real-IP") or \
            self.request.headers.get("X-Forwarded-For") or \
            self.request.remote_ip

2019年10月17日编辑:包括AWS负载均衡器使用的常用标头X-Forwarded-For

© www.soinside.com 2019 - 2024. All rights reserved.