2010-06-24 30 views

Trả lời

44

RequestHandler.request.remote_ip (từ dụ RequestHandler của)

bạn có thể kiểm tra việc đáp ứng như: Câu trả lời

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

Tài liệu: http://www.tornadoweb.org/en/stable/httputil.html#tornado.httputil.HTTPServerRequest.remote_ip – trss

22

mykhal là chính xác, tuy nhiên đôi khi ứng dụng của bạn sẽ được đằng sau một proxy, ví dụ nếu bạn sử dụng nginx và UWSGI và bạn sẽ luôn nhận được một cái gì đó như 127.0.0.1 cho IP từ xa. Trong trường hợp này bạn cần kiểm tra các tiêu đề quá, như:

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

remote_ip = x_real_ip hoặc self.request.remote_ip – itzhaki

+0

@itzhaki cảm ơn bạn đã đề xuất, tôi đã cập nhật câu trả lời của tôi –

+1

@itzhaki @ 3k Nhưng tài liệu (http://www.tornadoweb.org/en/stable/httputil.html#tornado.httputil.HTTPServerRequest .remote_ip) nói "Nếu HTTPServer.xheaders được đặt, sẽ chuyển theo địa chỉ IP thực được cung cấp bởi bộ cân bằng tải trong tiêu đề X-Real-Ip hoặc X-Forwarded-For". Vì vậy, 'remote_ip' là atlast trở về từ' X-Real-Ip' hoặc 'X-Forwarded-For' từ tiêu đề. – igaurav

Các vấn đề liên quan