工具JS:纯前端判断运行环境是公司内网还是公网环境

判断内网方式一般就2种:

  • 后端出接口,判断请求头内ip地址,是否公司内网的ip即可
  • 前端项目内处理,利用iframe、script、img等标签支持跨域(本文介绍)
  • 如果公司有前端node项目,前端可以自己写一个接口也行(很多公司都没搭建)

逻辑:

  1. 内网环境的项目内新建一个js文件(比如:测试开发环境)
  2. 生产环境调用内网的js文件地址
  3. 动态创建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;
}
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐