在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")
当然,上面的方法很好,但是我想确保使用新的
GETX-clitTypip
将得到相同的结果(用于系统升级)。但是,测试实际上没有通过这一断言:
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'
在深入研究代码之后,我发现
GETX-clitTypip
不是在类元中迭代
GET-RealRealip
. 它检查最左边的IP(或最右边的IP,取决于设置),如果
公共IP
找不到
我现在的问题是:
我怎么称呼
GETX-clitTypip
以返回
GET-RealRealip
?改变函数行为背后的逻辑是什么?我应该相信新的
GETX-clitTypip
忘记
GET-RealRealip
或继续使用已弃用的
GET-RealRealip
忘记新的
GETX-clitTypip
???????