如何找出浏览器连接的服务器IP地址(使用JavaScript)?

Joh*_*ohn 25 javascript

有什么办法可以找到浏览器所连接的服务器的IP吗?例如,如果浏览器正在访问http://www.google.com,我们能否以任何方式告诉它连接到哪个IP?这在实施循环DNS的情况下非常有用.因此,第一个请求a.com结果1.1.1.1和后续请求结果1.1.1.2等等.

我用JavaScript无法找到任何方法.它甚至可能吗?如果没有,有没有任何通用的方法来找到这个信息?

Spa*_*key 44

尝试将此作为快捷方式,而不是作为最终解决方案(请参阅注释):

<script type="text/javascript">
    var ip = location.host;
    alert(ip);
</script>
Run Code Online (Sandbox Code Playgroud)

此解决方案在某些情况下无法运行,但它可以帮助快速测试.问候

  • 正如参数暗示的(`host`),这是URL的主机部分,而不是IP地址. (11认同)

Jas*_*rry 12

相当肯定这是不可能完成的.但是,您可以使用首选的服务器端语言将服务器的IP打印到客户端,然后根据需要使用它.例如,在PHP中:

<script type="text/javascript">
    var ip = "<?php echo $_SERVER['SERVER_ADDR']; ?>";
    alert(ip);
</script>
Run Code Online (Sandbox Code Playgroud)

这取决于您的服务器的安全设置 - 有些可能会阻止这一点.

  • 不,如果服务器是NAT并且只有内部IP,那么它将是不正确的. (2认同)

Mat*_*att 10

不确定如何具体获取IP地址,但位置对象提供了部分答案.

例如,这些变量可能会有所帮助

  • self.location.host - 设置或检索位置的主机名和端口号
  • self.location.hostname - 设置或检索位置或URL的主机名部分.

  • self.location.origin -&gt; 提供协议+主机+端口 (3认同)

小智 5

你不能得到这个.从Javascript,您只能获取HTTP标头,该标头可能有也可能没有IP地址(通常只有主机名).浏览器程序的一部分是抽象TCP/IP地址,只允许您处理主机名.


Jia*_*b77 5

我认为您可能会使用来自 JSONP 请求的回调,或者可能只是使用外部服务的纯 JSON 数据,但基于 javascript 的输出location.host方式:

$.getJSON( "//freegeoip.net/json/" + window.location.host + "?callback=?", function(data) {
    console.warn('Fetching JSON data...');
    // Log output to console
    console.info(JSON.stringify(data, null, 2));
});
Run Code Online (Sandbox Code Playgroud)

我将使用此代码满足我的个人需求,因为最初我出于同样的原因访问此站点。

您可以使用另一种外部服务,而不是我为满足我的需要而使用的服务。存在一个非常好的列表,其中包含在此处完成的测试/sf/answers/2458616821/