Python3 Django 如何獲取真實遠端客戶端IP
阿新 • • 發佈:2018-12-18
解決方法參考
1.自定義中介軟體
生成http.py放到工程目錄:
from django.utils.deprecation import MiddlewareMixin class SetRemoteAddrFromForwardedFor(MiddlewareMixin): """ 如果部署了代理,使用此中介軟體獲取遠端客戶端IP。 在settings中註冊該中介軟體。 """ def process_request(self, request): try: real_ip = request.META['HTTP_X_FORWARDED_FOR'] except KeyError as err: print(err) else: real_ip = real_ip.split(",")[0] request.META['REMOTE_ADDR'] = real_ip
2.註冊中介軟體
在settings.py中註冊上述自定義的中介軟體。
# 中介軟體 MIDDLEWARE = [ ... 'your_project.http.SetRemoteAddrFromForwardedFor', ]
3.使用
在程式中重新使用字典HttpRequest.META。
... remote_ip = request.META.get('REMOTE_ADDR', '獲取IP失敗') ...