我试图为我的局域网上的用户提供一种方式"注册"网络管理员(我),而不必a)在我的计算机上托管一个页面b)在中央服务器上托管一个脚本(因为它只是一个路由器,不是真正的可靠的HTTP服务器)或c)注册动态域,以便前两个中的任何一个,并避免混淆发送到本地IP的链接的URL.
有没有一种简单的方法可以通过客户端脚本在屏幕上显示本地IP地址?我想也许我可以有一个iframe,指向一些通用的URL,路径中有一些javascript,这样我就可以让用户去一个非本地站点,iframe会弹出他们的IP地址,他们然后可以进入主远程页面中的表单.
如果所有其他方法都失败了,他们是否有办法查找跨平台的IP并且不涉及使用命令行(我认为第一个,即使不可能,也可能比第二个更真实).
值得庆幸的是,Webrtc可以从javascript访问本地IP.
看看:http://net.ipcalf.com/(来源)
(适用于镀铬)
但是,从Javascript访问本地IP可能是隐私和安全问题.
以下是net.ipcalf.com的简单示例
并在jsfiddle
var RTCPeerConnection = window.webkitRTCPeerConnection || window.mozRTCPeerConnection; var configuration = { "iceServers": [] }; var pc; var localIP; if(RTCPeerConnection){ pc = new RTCPeerConnection(configuration); pc.onicecandidate = function (evt) { if (evt.candidate) { if (!localIP) { localIP = getIpFromString( evt.candidate.candidate ); console.log(localIP); } } }; pc.createOffer(function (offerDesc) {; pc.setLocalDescription(offerDesc); }, function (e) { console.warn("offer failed", e); }); function getIpFromString(a) { var r = a.match(/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/); return r[0]; } } else { //browser doesn't support webrtc }