首页 > 解决方案 > 在 PHP 中获取远程服务器的 IP 地址

问题描述

我正在构建我的第一个 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 Server] 如何74.68.125.194在发出 auth 请求时进行检索呢?

除非我遗漏了什么,否则我唯一能想到的就是在我的身份验证请求中附加 IP 地址作为参数

标签: php

解决方案


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

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

正如@Joe在评论中所说。如果您可以在这些字段中找到用户的 IP 地址,则对 API 的请求直接来自用户的浏览器,而不是来自用户的网站服务器。在这种情况下,您无法找到网站服务器的 IP,因为它不参与此请求。您可能会创建一些解决方法(在 JS 中)来确定网站服务器的 IP 并将其包含在 API 请求中。


推荐阅读