在 django-ipware 2.1 版中;旧get_real_ip功能已弃用。当我使用新的get_client_ip; 我的测试单元没有显示相同的结果。意味着这两个函数的行为不同。以下是来自 django-ipware 测试单元的原始测试(不是我的)def test_http_x_forwarded_for_multiple(self): request = HttpRequest() request.META = { 'HTTP_X_FORWARDED_FOR': '192.168.255.182, 10.0.0.0, 127.0.0.1, 198.84.193.157, 177.139.233.139', 'HTTP_X_REAL_IP': '177.139.233.132', 'REMOTE_ADDR': '177.139.233.133', } ip = get_real_ip(request) self.assertEqual(ip, "198.84.193.157")以上当然工作正常,但我想确保使用新的get_client_ip将给出相同的结果(用于系统升级目的)。但测试实际上没有通过断言:def test_http_x_forwarded_for_multiple(self): request = HttpRequest() request.META = { 'HTTP_X_FORWARDED_FOR': '192.168.255.182, 10.0.0.0, 127.0.0.1, 198.84.193.157, 177.139.233.139', 'HTTP_X_REAL_IP': '177.139.233.132', 'REMOTE_ADDR': '177.139.233.133', } ip, is_routable = get_client_ip(request) self.assertEqual(ip, "198.84.193.157")结果:断言错误:'177.139.233.132'!='198.84.193.157'深入研究代码后,我发现 newget_client_ip并没有像get_real_ip. 它检查最左边的 ip(或最右边的 ip,具体取决于设置),如果未找到公共 IP,则跳到下一个元数据我现在的问题是:如何get_client_ip以返回相同 ip 的方式调用get_real_ip?改变函数行为背后的逻辑是什么?我应该相信新的get_client_ip而忘记get_real_ip,还是继续使用已弃用的get_real_ip而忘记新的get_client_ip??????
添加回答
举报
0/150
提交
取消