我会尝试在图表中解释
[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服务器。
答案 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地址。