为了获取远程访问用户的IP地址, 我们一般会取请求头里的 REMOTE_ADDR 、HTTP_VIA 、 HTTP_X_FORWARDED_FOR 三个地址。
在用户没有使用代理的情况下, REMOTE_ADDR就是用户的真实地址, 而后两个值为空。
但在使用了代理后,则根据这几个字段值的情况分几种:
高匿代理
这种是最理想的代理, REMOTE_ADDR是代理服务器的地址, HTTP_VIA 、HTTP_X_FORWARDED_FOR没值, 服务器无法感知用户是否使用了代理
匿名代理
这三个字段的值都是代理服务器的IP地址,服务器知道你使用了代理, 但不知道你的真实IP
透明代理
REMOTE_ADDR是代理IP,但HTTP_X_FORWARDED_FOR是你的真实IP地址, 虽然网络通道上是经过了代理服务器, 但服务器依然知晓你的真实地址。