当前位置:  开发笔记 > 编程语言 > 正文

在浏览器中获取本地IP地址的非服务器端方法?

如何解决《在浏览器中获取本地IP地址的非服务器端方法?》经验,为你挑选了1个好方法。

我试图为我的局域网上的用户提供一种方式"注册"网络管理员(我),而不必a)在我的计算机上托管一个页面b)在中央服务器上托管一个脚本(因为它只是一个路由器,不是真正的可靠的HTTP服务器)或c)注册动态域,以便前两个中的任何一个,并避免混淆发送到本地IP的链接的URL.

有没有一种简单的方法可以通过客户端脚本在屏幕上显示本地IP地址?我想也许我可以有一个iframe,指向一些通用的URL,路径中有一些javascript,这样我就可以让用户去一个非本地站点,iframe会弹出他们的IP地址,他们然后可以进入主远程页面中的表单.

如果所有其他方法都失败了,他们是否有办法查找跨平台的IP并且不涉及使用命令行(我认为第一个,即使不可能,也可能比第二个更真实).



1> Pawel Dubiel..:

值得庆幸的是,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   
}

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有