Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript或HTML5检索本地ip_Javascript_Html - Fatal编程技术网

Javascript或HTML5检索本地ip

Javascript或HTML5检索本地ip,javascript,html,Javascript,Html,我工作和个人都使用笔记本电脑。因此,它有时连接到家庭网络,有时连接到网络的许多可能工作场所之一 我一直在考虑定制浏览器的主页和/或MDM主题(LinuxMint登录页面,支持html5),两者都包括定制html页面,可能使用javascript,但我应该知道笔记本电脑在哪里 想想我去办公室,我想知道关于服务器状态的信息和到办公室服务器的链接(A、B、C);去客户处,我需要连接到办公室的外部IP(a*,B*)和客户服务器(X,Y,Z);回到家里,我想知道惠特的信息、新闻、我的足球队成绩、推特等等。

我工作和个人都使用笔记本电脑。因此,它有时连接到家庭网络,有时连接到网络的许多可能工作场所之一

我一直在考虑定制浏览器的主页和/或MDM主题(LinuxMint登录页面,支持html5),两者都包括定制html页面,可能使用javascript,但我应该知道笔记本电脑在哪里

想想我去办公室,我想知道关于服务器状态的信息和到办公室服务器的链接(A、B、C);去客户处,我需要连接到办公室的外部IP(a*,B*)和客户服务器(X,Y,Z);回到家里,我想知道惠特的信息、新闻、我的足球队成绩、推特等等。我可以通过javascript(例如,使用一个表或字典:places={ip1:[a,B,C],ip2:[X,Y,Z]}或类似的东西来设置所有这些

我知道有很多地方都在谈论检索我的公共IP,所以…但是使用它们需要一个活动的、开放的internet连接。我将使用的一些地方没有internet访问权限,或者需要使用带有登录名和密码的代理。因此,任何涉及到外部站点引用的解决方案都不起作用(但客户使用我需要访问的本地intranet服务)

我也尽量保持简单:想法是构建一些快速索引页面。因此我不希望在页面中加载java(我不确定MDM html5主题是否支持它)

所以问题是:是否有任何方法可以使用纯javascript或html5检索本地IP(非公共IP),完全客户端,避免php、asp、ssi、对公共网络的调用或第三方插件(java/flash)?

我认为响应不是这样,因为我还没有找到任何类似“get_ip()”的js函数,但我希望是错误的

我能想到的唯一解决方案是:

  • 安装一个本地web服务器,一个小nginx或者一些可以用来检索客户端ip请求的东西
  • 使用java(请不要!)
  • 使用html5文件系统api并在某个文件夹中查找数据,在该文件夹中,某些脚本在启动时编写了ip
  • 更改之前的脚本,只需重写HTML文件,我将使用带有该ip硬编码的ip
  • 使用javascript ping每个可能网络上的已知服务器列表
还有其他想法吗?
谢谢

去掉链接示例的复杂性:

function getLocalIP(cb) {

    var RTCPeerConnection = window.webkitRTCPeerConnection || window.mozRTCPeerConnection || window.RTCPeerConnection,
    rtc = new RTCPeerConnection({
        iceServers: []
    });
    if (window.mozRTCPeerConnection) rtc.createDataChannel('', {reliable: false});
    rtc.onicecandidate = function(e) {
        if (cb && e.candidate) {
            cb(e.candidate.candidate.split(" ")[4]);
            cb = null;
        }
    }; 

    rtc.createOffer(function(resp) {
            var moz=resp.sdp && 
                   resp.sdp.indexOf("c=IN IP4") !==0 && 
                   resp.sdp.split("c=IN IP4")[1].trim().split(/\s/)[0];
            if(moz && moz!=="0.0.0.0"){
                 cb( moz );
            }else{
                 rtc.setLocalDescription(resp);
            }
    }, Boolean);
} /* end getIP() */

getLocalIP(alert)

在Chrome和Firefox中给出相同的结果,在我的IE副本中不起作用。

不,出于安全原因,这对于浏览器是不可能的-你知道吗?到目前为止你尝试了什么?顺便说一句,php在客户端不起作用。可能的答案太多,或者好的答案对于这种格式来说太长。@cept0,但是结果可能不是发问者所期望的。@GhostGambler当然,但只有公共IP…@cept0这个javascript示例收集本地IP。不是公共IP。事实上我错了。发问者明确要求本地IP,所以这个示例页面正是他搜索的。仅根据HTML5ROCKS WebRTCy适用于Firefox和Chrome(或Opera,使用类似Chrome的webkit)--您必须安装/启用Internet Explorer的Chrome框架才能添加该功能。此处信息:但如果没有基于Chrome的插件,从IE11开始,它还不受本机支持。谷歌Chrome在2013年放弃了对Internet Explorer Chrome框架的支持。谢谢。现在我可以定义一个js函数“PrepareLink”接受一个参数,然后调用GetLocalip(PrepareLink)。然后,在PrepareLink中,我可以根据IP构建链接。这正是我所寻找的。后续:这在chrome中停止工作,因为我在9月份发布,可能是为了更好。