如何在CometD中获取客户端的代理IP地址?

时间:2014-02-24 13:08:17

标签: java proxy ip jetty cometd

使用fiddler作为HTTP代理,我连接到本地CometD服务器。

我继承了课程DefaultSecurityPolicy,并在server.getContext().getRemoteAddress().getAddress().getHostAddress()方法中使用canHandshake获取了客户端的IP地址。

然而,它返回客户端的真实IP(原始IP),但我想要的是直接与服务器通信的那个。有什么帮助吗?


如果客户端使用WebSocket与CometD服务器通信,则HTTP代理根本不会生效,所以我得到的是原始地址,我是对的吗?

1 个答案:

答案 0 :(得分:0)

public function getlocationFromIp()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
        // Check if using Shared Internet Environment 
        $ipAddress = $_SERVER['HTTP_CLIENT_IP']; 
    }elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ 
        // Check if using Proxy User 
        $ipAddress = $_SERVER['HTTP_X_FORWARDED_FOR']; 
    }else{ 
        $ipAddress = $_SERVER['REMOTE_ADDR']; 
    } 
    $ip_geo_url   = 'http://freegeoip.net/json/'.$ipAddress;
    $ip_json    = file_get_contents($ip_geo_url);
    $ip_json    = json_decode($ip_json);
    return $ip_json;
}

如果有帮助,它会获得ip的位置... 它也将获得代理位置