工具JS:纯前端判断运行环境是公司内网还是公网环境
判断内网方式一般就2种:
- 后端出接口,判断请求头内ip地址,是否公司内网的ip即可
- 前端项目内处理,利用iframe、script、img等标签支持跨域(本文介绍)
- 如果公司有前端node项目,前端可以自己写一个接口也行(很多公司都没搭建)
逻辑:
- 内网环境的项目内新建一个js文件(比如:测试开发环境)
- 生产环境调用内网的js文件地址
- 动态创建js标签,调用成功执行onload,调用失败执行onerror
创建js文件:
vue、react放在public文件夹内:(内容可以为空)
创建文件:public/isIntranet.js
封装api:
// 内网查询
export const checkIntranet = () => {return new Promise((resolve, reject) => {const body = document.getElementsByTagName('body')[0];// 动态添加script标签const script = document.createElement('script');script.type = 'text/javascript';script.src = '//xxxxxx.com/isIntranet.js?_t=' + Math.random() * 1e18;body.appendChild(script);script.onload = () => {body.removeChild(script);resolve(true)};script.onerror = () => {body.removeChild(script);resolve(false)};});
}
调用:
// 引用
import { checkIntranet } from '@/api/utils';// 判断
const isInternet = await checkIntranet();
if (!isInternet) {message.warning('请使用内网或VPN访问');setTimeout(() => {this.props.history.push('/login');}, 2000)return;
}