34

我有一个RequestHandler传入post()s 的对象。如何找到发出请求的客户端的IP ?我浏览了大部分RequestHandler的方法和属性,似乎遗漏了一些东西。

4

2 回答 2

50

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

您可以检查响应,例如:

...
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write(repr(self.request))
...
于 2010-06-24T15:58:13.117 回答
34

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

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

于 2015-03-10T09:04:50.530 回答