我有以下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();
但是当我通过HTML中的AJAX调用此api时,得到的IP地址不正确。我在ajax中获得的最终IP地址是我的服务器(Hostgator服务器)的,而不是我自己的IP地址。
我在做什么错了?
答案 0 :(得分:0)
在您的PHP示例中,您使用功能HTTP_CLIENT_IP
获得了getRealIpAddr()
,但是在ajax调用中,您仅使用ipapi.php
作为URL。
您必须在此呼叫中输入完整的URL,例如:
xmlhttp.open("GET", "http://www.myAwesomeURL.com/getIpApi", true);
在此GET /getIpApi
服务器上,必须返回函数getRealIpAddr()
的结果,然后您才能在前端应用程序中使用它。