web内外网判断界面
因日常需要,我们在实验室内网中部署了一个服务,在校园网内都能正常访问,同时配置了内网穿透服务,实现外网也能正常访问。但外网访问毕竟是通过内网穿透实现,稳定性与网速都有限制,且不能实现提供大量下载服务,于是就有了这么一个想法:用户先访问内外网判断界面,如果判断当前用户所在的是校园网内网,则自动跳转到内网界面,否则跳转到外网界面进行访问,从而实现内外网分流,提高访问效率,降低带宽占用等功能。
原理:在内外网判断界面中使用内网ip请求一张图片,然后利用图片 load 后的 error 事件来判断内外网,当判断界面能够加载到内网中的图片时,则当前用户所处的为内网;否则当前用户为外网,然后使用 window.location.href
跳转到不同的界面中。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>内外网判断中转界面</title>
<style>
*{
margin: 0;
padding: 0;
overflow: hidden;
box-sizing: border-box;
}
a{
text-decoration: none;
color: #000;
}
a:hover{
color: blue;
text-decoration: underline;
font-weight: 600;
}
h1{
margin: auto;
padding: 0;
width: 100%;
height: 80px;
background-color: #f5f5f5;
text-align: center;
justify-content: center;
line-height: 80px;
}
h3{
margin:20px auto;
padding: 0;
background-color: yellow;
width: 600px;
height: 80px;
text-align: center;
justify-content: center;
/* 文字上下居中 */
line-height: 80px;
}
#footer {
position: fixed;
bottom: 0;
width: 100%;
height: 50px;
background-color: #f5f5f5;
text-align: center;
line-height: 50px;
}
#footer p{
margin: auto;
padding: 0;
font-size: 16px;
line-height: 25px;
}
</style>
</head>
<body>
<h1>XXX网络中转平台</h1>
<h3>正在判断当前网络所处网络类型,请稍等!!!</h3>
<div id="footer">
<p>有问题请联系邮箱:abc@xxx.com</p>
<p> © 2023 <a href="www.qiaoyukeji.cn" target="_blank">巧遇科技工作室 </a>All Rights Reserved</p>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
// 利用图片 load 后的error事件来判断网络的内外网
var timeStr = setTimeout(function () {
var $img = $('<img src="http://127.0.0.1:5500/2.jpg?' + (new Date()) + '">')
$img.appendTo('body').css("display", "none").load(function () {
console.log("内网!")
window.location.href="http://www.baidu.com"
$(this).remove()
}).error(function () {
console.log("外网!!")
window.location.href="http://www.bilibili.com"
$(this).remove()
})
}, 2000)
</script>
</body>
</html>