Python3 Django 如何获取真实远程客户端IP

解决方法参考

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失败')
...

说明:不要vmware虚拟机里面测试

猜你喜欢

转载自blog.csdn.net/sz76211822/article/details/83508870
今日推荐