如何获取REST消费者的IP地址

时间:2014-06-02 08:01:39

标签: php rest

我会尝试在图表中解释

[REST SERVER] <--------> [JAVASCRIPT BASED WEBSITE]  <--------> [USER]
192.168.0.2              192.168.0.3                            192.168.0.123

如何获取使用REST服务器的网站的IP而不是USER的IP。

我尝试使用$ _SERVER ['REMOTE_ADDR']和$ _SERVER ['HTTP_REFERRER'],但它们都返回了用户的IP。

网上有可能吗?我正在使用PHP作为我的REST服务器。

3 个答案:

答案 0 :(得分:4)

你不能安全地做到这一点。您必须将javascript传递给服务器。由于javascript是在客户端运行的,因此可能会被欺骗。

即便如此,javascript也没有本机功能来获取网站的IP地址。它可以为您提供域名。然后在例如PHP中,您可以将此域名解析为IP地址。或者让基于javascript的Web服务器直接提供其IP地址。例如,在PHP的帮助下,您可以使用javascript:var myIP = '<?php echo $_SERVER['SERVER_ADDR']; ?>';

答案 1 :(得分:4)

我在此假设您的网站是{{1>}上的托管。这意味着用户将从所述服务器下载Javascript和HTML数据,然后在192.168.0.3上本地执行。然后,Javascript将从该本地IP远程调用REST服务。

您想知道如何在客户端下载之前获取托管Javascript / HTML文件的服务器的IP,可能是以可靠的方式。答案是这是不可能的。因为您的实际架构如下所示:

192.168.0.123

答案 2 :(得分:1)

作为旁注,Origin标题(可以被欺骗)用于此目的,但安全的解决方法是JS服务器和REST服务器之间的某种握手。

基于Javascript的网页通过服务器端请求令牌代码,您将此令牌代码放入javascript并将其发送到其余服务器。

其余服务器验证令牌代码,然后您确定javascript所在的位置。

这是验证原点的唯一方法,无法通过普通IP地址。