我使用笔记本电脑进行工作和个人使用。因此它有时会连接到家庭网络,有时会连接到许多可能的工作场所网络之一
我一直在考虑自定义浏览器的主页和/或MDM主题(linux mint登录页面,支持html5),两者都包括自定义html页面,可能使用javascript,但我应该知道笔记本电脑在哪里。
想想我去办公室,我想了解服务器的状态和办公室服务器的链接(A,B,C);去客户所在地,我需要连接办公室的外部IP(A *,B *)和客户服务器(X,Y,Z);回到家里,我想要提供信息,新闻,我的足球团队成绩,推特等等。我可以通过javascript设置所有这些(例如,使用表格或字典:places = {ip1:[A,B,C],ip2:[X,Y,Z]}或类似的东西。
我知道有很多地方在讨论检索我的公共IP等等......但是使用它们需要一个主动和开放的互联网连接。我将使用它的一些地方没有互联网访问,或者需要使用具有登录名和密码的代理。因此,任何涉及外部站点引用的解决方案都不起作用(但客户使用我需要访问的本地Intranet服务)。
我也试着保持简单:想法是构建一些快速索引页面。所以我不想在页面中加载java(我不确定MDM html5主题是否支持它)
所以问题是:有没有办法使用纯javascript或html5检索LOCAL IP(非公共IP),完全客户端,避免php,asp,ssi,调用公共网络,或者第三派对插件(java / flash)?
我认为响应不是,因为我没有找到像“get_ip()”这样的js函数,但我希望是错的。
我能想到的唯一解决方案是:
还有其他想法吗? 感谢
答案 0 :(得分:5)
删除链接示例的复杂情况:
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副本中无效。