Преглед изворни кода

增加https判断与内外网判断

dedsudiyu пре 2 недеља
родитељ
комит
fe316d09f0
3 измењених фајлова са 61 додато и 3 уклоњено
  1. 7 2
      .env.production
  2. 49 0
      src/utils/index.js
  3. 5 1
      src/utils/request.js

+ 7 - 2
.env.production

@@ -4,8 +4,13 @@ NODE_ENV=production
 # 项目名称
 VUE_APP_TITLE=中国安全生产科学研究院实验室安全智慧化管控中心
 
-# 接口基础地址
-VUE_APP_BASE_API=http://192.168.1.88/labSystem
+# 外网接口基础地址
+VUE_APP_BASE_API = 'lab.zjznai.com/gzdxlabSystem'
+# VUE_APP_BASE_API = 'lab.zjznai.com/appTest'
+
+# 内网接口基础地址
+VUE_APP_BASE_LOCAL_API = '192.168.8.2/api'
+# VUE_APP_BASE_LOCAL_API = '192.168.1.88/labSystem'
 
 # 接口超时时间(毫秒)
 VUE_APP_TIMEOUT=20000

+ 49 - 0
src/utils/index.js

@@ -0,0 +1,49 @@
+// 判断当前用户网络 外网/内网 返回接口地址
+export function judgmentNetworkReturnAddress() {
+  /*判断是否是内网IP*/
+  // 获取当前页面url
+  var curPageUrl = window.location.href;
+
+  var reg1 = /(http|ftp|https|www):\/\//g;//去掉前缀
+  curPageUrl =curPageUrl.replace(reg1,'');
+
+  var reg2 = /\:+/g;//替换冒号为一点
+  curPageUrl =curPageUrl.replace(reg2,'.');
+
+  curPageUrl = curPageUrl.split('.');//通过一点来划分数组
+
+
+  var ipAddress = curPageUrl[0]+'.'+curPageUrl[1]+'.'+curPageUrl[2]+'.'+curPageUrl[3];
+
+  var isInnerIp = false;//默认给定IP不是内网IP
+  var ipNum = getIpNum(ipAddress);
+  /**
+   * 私有IP:A类  10.0.0.0    -10.255.255.255
+   *       B类  172.16.0.0  -172.31.255.255
+   *       C类  192.168.0.0 -192.168.255.255
+   *       D类   127.0.0.0   -127.255.255.255(环回地址)
+   **/
+  var aBegin = getIpNum("10.0.0.0");
+  var aEnd = getIpNum("10.255.255.255");
+  var bBegin = getIpNum("172.16.0.0");
+  var bEnd = getIpNum("172.31.255.255");
+  var cBegin = getIpNum("192.168.0.0");
+  var cEnd = getIpNum("192.168.255.255");
+  var dBegin = getIpNum("127.0.0.0");
+  var dEnd = getIpNum("127.255.255.255");
+  isInnerIp = isInner(ipNum,aBegin,aEnd) || isInner(ipNum,bBegin,bEnd) || isInner(ipNum,cBegin,cEnd) || isInner(ipNum,dBegin,dEnd);
+  return isInnerIp?process.env.VUE_APP_BASE_LOCAL_API:process.env.VUE_APP_BASE_API;
+  /*获取IP数*/
+  function getIpNum(ipAddress) {
+    var ip = ipAddress.split(".");
+    var a = parseInt(ip[0]);
+    var b = parseInt(ip[1]);
+    var c = parseInt(ip[2]);
+    var d = parseInt(ip[3]);
+    var ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
+    return ipNum;
+  }
+  function isInner(userIp,begin,end){
+    return (userIp>=begin) && (userIp<=end);
+  }
+}

+ 5 - 1
src/utils/request.js

@@ -2,6 +2,10 @@ import axios from 'axios'
 import router from '@/router'
 import store from '@/store'
 import { Message,Loading  } from 'element-ui'
+import { tansParams,judgmentNetworkReturnAddress } from "@/utils/index";
+
+//判定http或者https
+let urlText = window.location.href.split('://')[0]+'://';
 
 //弹窗状态开关
 let messageData = null;
@@ -16,7 +20,7 @@ let options = {
 let loadingCount = 0;
 
 const service = axios.create({
-  baseURL: process.env.VUE_APP_BASE_API || '',
+  baseURL: urlText+judgmentNetworkReturnAddress(),
   timeout: Number(process.env.VUE_APP_TIMEOUT) || 15000
 })