【发布时间】:2011-03-17 15:59:01
【问题描述】:
我想获取客户端系统的本地 IP 地址。如何使用 JavaScript 实现这一点?
【问题讨论】:
标签: javascript
我想获取客户端系统的本地 IP 地址。如何使用 JavaScript 实现这一点?
【问题讨论】:
标签: javascript
我认为没有一些服务器交互是不可能的。
最简单的方法是向服务器端 sn-p 发出 AJAX 请求,在 PHP 中,该请求如下所示:
<?php echo $_SERVER["REMOTE_ADDR"]; ?>
【讨论】:
你不能直接。一种方法是向您的服务器发送一个 AJAX 请求(如果有的话),它可以返回用户正在查看当前页面的 IP 地址。
【讨论】:
您可能需要一个会告诉您的外部方;即使有可能从 javascript 获取本地 ip(我对此表示怀疑),您大多数时候都会在10.x.x.x 或192.168.x.x 范围内获得私有 IP 地址(或者我似乎不记得的其他地址) )
所以通过 php 将 ip 放入页面中,就像上面建议的那样,有一个专门的脚本来回显远程 ip。这将是您在互联网上看到的 ip。
【讨论】:
我认为,你不能。但是,如果您的服务器至少有服务器端包含 (SSI) - 每个 apache 安装默认启用 - 您可以像这样获取 ip:
var ip = '<!--#echo var="REMOTE_ADDR"-->';
【讨论】:
当嵌入 NodeJS 代码时,这适用于我的 Mac,并提供运行代码的服务器的本地 IP 地址:
// get local IP address - Command line used is: ipconfig getifaddr en0
const { spawnSync } = require( 'child_process' );
const ip = spawnSync( 'ipconfig', [ 'getifaddr', 'en0' ] );
// the two outputs generated:
console.log( `stderr: ${ip.stderr.toString()}` );
console.log( `stdout: ${ip.stdout.toString()}` );
// applied:
console.log( 'This JavaScript is running on: ' + ip.stdout.toString() );
注意:在这种情况下,'en0' 是网络接口 - 您可能会发现您的网络连接是通过 'en1' 或 'en2' 等,因此您需要添加一些逻辑来查找正在使用的接口用过。
希望对你有帮助
菲尔
【讨论】:
en0 的应用程序。