使用fiddler作为HTTP代理,我连接到本地CometD服务器。
我继承了课程DefaultSecurityPolicy
,并在server.getContext().getRemoteAddress().getAddress().getHostAddress()
方法中使用canHandshake
获取了客户端的IP地址。
然而,它返回客户端的真实IP(原始IP),但我想要的是直接与服务器通信的那个。有什么帮助吗?
如果客户端使用WebSocket与CometD服务器通信,则HTTP代理根本不会生效,所以我得到的是原始地址,我是对的吗?
答案 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的位置... 它也将获得代理位置