在PHP中获取远程服务器的IP地址

时间:2019-10-16 19:36:56

标签: php

我正在构建我的第一个API驱动的应用程序。我正在寻找一种方法来检索发出请求的服务器IP地址。

这是工作流程。

[User Website] => Sends Auth Request To [API Server]

当用户从其网站发出身份验证请求时,我希望API服务器检索用户网站的IP地址。现在,我经历了$_SERVER,它会给我来自API服务器的IP地址,或者给我用户计算机的IP地址,而不是他们网站的IP地址。

这是一个例子

[user:24.64.64.192] => BROWSER => [user-website:74.68.125.194] => API Request => [API Server:25.25.192.168]

现在我只能得到25.25.192.16824.64.64.192。我需要获取的是74.68.125.194,{IP地址是虚构的}

那么[API服务器]如何在发出身份验证请求时检索74.68.125.194

除非我丢失了某些东西,否则我唯一想到的就是将IP地址作为我的身份验证请求中的参数附加

1 个答案:

答案 0 :(得分:0)

发出请求的设备的IP地址在$_SERVER['REMOTE_ADDR'];

但是,如果您使用的是反向代理,或者客户端网站通过标准代理连接到您的服务器,则您会在其中找到代理的IP,因为是代理将请求转发到您的服务器。在这种情况下,您要查找$_SERVER['HTTP_X_FORWARDED_FOR']$_SERVER['HTTP_CLIENT_IP']是否设置这些值取决于代理服务器。

@Joe 在评论中说。如果您可以在这些字段中找到用户的IP地址,则对API的请求直接来自用户的浏览器,而不是来自用户的网站服务器。在这种情况下,您将找不到网站服务器的IP,因为该请求未涉及该IP。 您可能会(在JS中)创建一些变通办法,以确定网站服务器的IP并将其包含在API请求中。