У меня есть следующий код PHP для получения IP-адреса клиента:
<?php
function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
echo json_encode(array('ip'=>getRealIpAddr()));
?>
Когда я запускаю этот API напрямую или через Почтальон, я получаю правильный IP-адрес, то есть мой собственный IP-адрес.
Мой код AJAX:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var getresponse = JSON.parse(this.responseText);
ipaddr = getresponse.ip;
console.log(ipaddr);
}
};
xmlhttp.open("GET", "ipapi.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
Но когда я вызываю этот API через AJAX в моем HTML, я получаю неправильный IP-адрес. Результирующий IP-адрес, который я получаю в ajax, принадлежит моему серверу (серверу Hostgator), а не моему собственному IP-адресу.
Что я делаю не так?