问题描述:

  项目中的企业微信内部应用,使用Vue-cli搭建的H5页面web,在低版本的安卓手机或ios8.0、9.0中出现接口数据访问失败,HTTP状态码返回0的问题,无法正常使用系统。安卓手机主要出现问题得机型为oppo、vivo。

问题分析:

  旧版本系统对ES6新特性不支持。比如箭头函数,let,const。另外,还有少部分低版本安卓不支持小部分的ES5语法。

解决方法:
  首先在index.html中加入这三句:
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,IE=IE9">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
  一:若在项目中使用了ES6 promise对象,在Chrome、Safari浏览器下可以正常运行,但在360兼容模式、IE内核中不支持。
  安装依赖:npm install es6-promise -S // 下载插件

  在main.js中引入:require('es6-promise').polyfill()

  或者

1 import Es6Promise from 'es6-promise'
2 Es6Promise.polyfill()

  二:用于对ES6新语法不支持的浏览器

  安装依赖:npm install babel-polyfill -S

  在main.js中引入:import "babel-polyfill",放在最顶部,确保全面加载

  更改 webpack.base.conf.js 文件中的入口 entry:

1 entry: {
2 app: ["babel-polyfill", "./src/main.js"] //为低版本系统配置
3 //app: './src/main.js' //旧配置
4 },

重新打包发布,问题解决。

【补充拓展】IE浏览器中,以上方法设置后,依然会有报错,还需要把es6转es5

  参考:https://blog.csdn.net/qq_24985715/article/details/93764818?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-2&spm=1001.2101.3001.4242

  转换语句:npm i babel-preset-es2015 -s
  并且在项目的根目录下,修改.babelrc的内容,添加'es2015'
  

  安装 npm i classlist-polyfill,并且在base.config.js中,添加'classlist-polyfill'
  app: ["classlist-polyfill","babel-polyfill", "./src/main.js"]  以上操作不一定非要使用,可以尝试下面的操作
 
  关于IE浏览器中vue用axios跨域请求接口,报错列表中不存在请求标头,此问题就是出现android9或者其他手机版本调用接口失败,状态码为0的原因,解决此问题后,兼容性问题基本就都解决了
  接口访问失败,原因为在后台接口的跨域设置中,Access-Control-Allow-Headers设置的通配符*在IE浏览器不支持!
  

  http中标准的head,认证名字叫做Authorization,A要大写,但在vue用axios跨域请求时,传的head名称为authorization,是小写,所以如果是使用IE浏览器,即使是设置Access-Control-Allow-Headers为*,也无法识别!

  解决办法:

  后台服务器权设置Access-Control-Allow-Headers为'authorization,Authorization,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type',强制包含一个authorization头即可

    response.setHeader("Access-Control-Allow-Headers", "authorization,Authorization,DNT,X-CustomHeader," +"Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type");

    或:

 1 protected override void Application_BeginRequest(object sender, EventArgs e)
2 {
3 Response.Headers.Add("Access-Control-Allow-Origin", "*");
4 if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")//拦截处理Options请求
5 {
6 string domain = Request.Headers.Get("Origin");
7
8 Response.Headers.Add("Access-Control-Allow-Methods", "*");
9 Response.Headers.Add("Access-Control-Allow-Headers", "authorization,Authorization,DNT,X-CustomHeader," +
10 "Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,*");
11 Response.Flush();
12 Response.End();
13 }
14 base.Application_BeginRequest(sender, e);
15 }

    注意:如果在后台接口层面进行了跨域设置,就不要在iis中在单独设置http响应头。

 
  最后就是IE浏览器的兼容问题很多,很多需要特殊处理,尽量使用谷歌。
 

【问题解决记录】vue解决低版本安卓与ios10以下系统兼容性问题的更多相关文章

  1. js中如果遇到低版本安卓设备调用setTimeout不生效解决办法

    工作中会遇到低版本安卓设备调用setTimeout不生效,既不会报错,里面的函数也不会执行,这里po一个解决办法,如果不执行则执行安卓自己封装的原生的setTimeout方法:sdk.setTimeo ...

  2. 解决vue低版本安卓手机兼容性问题

    低版本的安卓手机可能会白屏,是由新特性不支持引起的 解决代码es6新特性兼容问题 1,npm 安装 npm install babel-polyfill npm install es6-promise ...

  3. vue android低版本 白屏问题 你是不是用了Object.assign ??

    问题描述 在部分比较低版本的手机中,发现apk安装后白屏,但是大部分手机都能安装. 本人在使用android4.4时候,也是安装后打开白屏. 原因: 代码写法不兼容 this.user = Objec ...

  4. 记一次如何解决低版本jar包里面的bug,不适宜替换成高版本的经历

    背景:目前正在迭代开发的项目,应用户要求新增一个电子文档转换的功能,即将不标准的excel文件转换为标准的excel文件(标准模板). 选择:pio ,本项目里面本来就有poi的jar包 问题:项目里 ...

  5. 解决低版本Eclipse安装Findbugs插件无法显示问题

    问题描述 Eclipse安装Findbugs,显示安装成功,但是重启Eclipse在[Window]-[show view]-[other]中没有显示 原因 Eclipse版本太低,新版的Findbu ...

  6. 解决低版本IE关于html5新特性的兼容性问题html5shiv.js和Respond.js,以及excanvas.js解决低版本IE不支持canvas的问题

    插件:html5shiv.js 让IE9以下版本支持html5新标签,git地址https://github.com/aFarkas/html5shiv 用于解决IE9以下版本浏览器对HTML5新增标 ...

  7. 解决低版本Xcode不支持高版本iOS真机调试的问题

    1.现象截图 Could not locate device support files. This iPhone 6s is running iOS 11.1 (15B93), which may ...

  8. 移动表格行 解决低版本IE fadeIn fadeOut 失效问题

    在维护一个内部使用的web工具的时候,需要在表格里配置参数,并且支持参数列的上下移动,有jQuery-UI工具支持对表格列的拖动,但是此处不追求效果,而且旧系统页面兼容性很差,无奈只能做上下移动的按钮 ...

  9. background低版本安卓浏览器不支持复合属性,要分开写

    background:url("http://..../xxx.jpg") no-repeat center/cover; 这种复合形式在有些低端安卓浏览器中不支持,最好分开写: ...

  10. 解决低版本chrome浏览器不支持es6 Array.find()

     if (!Array.prototype.find) {  Array.prototype.find = function(predicate) {    'use strict';    if ( ...

随机推荐

  1. GoLand IDE 如何设置每次打开时先展示启动界面

    GoLand IDE 如何设置每次打开时先展示启动界面 打开设置,在SystemSeting下进行如下操作即可

  2. 最逼真的AI换脸软件,Pluse下载介绍(可直播)

    Pluse是基于人工智能的实时AI换脸工具,可以在无需任何前期数据训练的情况下,通过一张照片快速替换视频中的人脸,它支持高分辨率细节重建.色彩矫正,并能实时替换多目标人脸,非常适合娱乐社交.影视制作和 ...

  3. Maven 项目获取 git 分支、提交等信息

    git-commit-id-plugin 是一个 Maven 插件,用于在 Maven 项目的构建过程中自动获取 git 仓库的信息,如最后一次提交的 ID.分支名称.构建时间等,并将这些信息注入到项 ...

  4. 你还用ES存请求日志?ClickHouse+Vector打造最强Grafana日志分析看板

    为什么要做NGINX日志分析看板 Grafana官网的dashboards有NGINX日志采集到ES数据源的展示看板,也有采集到LOKI数据源的展示看板,唯独没有采集到ClickHouse数据源的展示 ...

  5. 使用最小二乘法进行线性回归(Python)

    已知测得某块地,当温度处于15至40度之间时,数得某块草地上小花朵的数量和温度值的数据如下表所示.现在要来找出这些数据中蕴含的规律,用来预测其它未测温度时的小花朵的数量. 测得数据如下图所示: imp ...

  6. Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解

    title: Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解 date: 2024/11/14 updated: 2024/11/14 author: cmdragon ...

  7. 低功耗4G模组HTTP网络协议应用

    ​ 大家好,今天我们来学习合宙Air780E模组LuatOS开发4G通信中HTTP网络协议的应用,实现模组和服务器之间数据的传输. 一.HTTP概述 1.1 简介 HTTP是HyperTextTran ...

  8. P5524 Ynoi2012 NOIP2015 充满了希望

    P5524 Ynoi2012 NOIP2015 充满了希望 数组开大见祖宗. 思路 不难发现只有询问才会产生贡献,而询问的值来自于距离它最近的且能覆盖这个询问的点的覆盖操作. 可以每个询问操作保存一个 ...

  9. P8392 BalticOI 2022 Day1 Uplifting Excursion

    P8392 BalticOI 2022 Day1 Uplifting Excursion 贪心加动规,好题,这两个甚至完全相反的东西可以融进一道题-- 思路 物品较少,贡献较小,体积较小,但总体积巨大 ...

  10. MySQL-8.3.0 innovation 创新版本YUM安装配置

    MySQL-8.3.0 innovation版本已发布了,想抢先体验一下最新的功能,可以用以下的方式快速在虚拟机上安装一下哈 服务器环境:[root@node213 ~]# cat /etc/redh ...