问题描述:

  项目中的企业微信内部应用,使用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. 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(4)

    1.问题描述: 目前华为推送API使用的是v2或者v1版本,请问目前最新的鸿蒙next使用v3版本是否兼容v2或者v1,反过来将v2或者v1的api可以推送鸿蒙next的设备吗? 解决方案: v3接口 ...

  2. TPS和QPS区别与计算

    1.定义 TPS(Transactions Per Second):每秒事务数.事务是指一个完整的业务处理过程,例如用户完成一次购物支付的过程,从挑选商品.下单.支付到生成订单,这一系列操作可以看作是 ...

  3. webpack 0-1 配置 以及 (性能优化)

    五大核心: 模式 production developmentmode: 'development', 入口entry: './src/js/index.js', loader的配置module: { ...

  4. 鸿蒙Navigation入门使用

    Navigation组件适用于模块内和跨模块的路由切换,通过组件级路由能力实现更加自然流畅的转场体验,并提供多种标题栏样式来呈现更好的标题和内容联动效果.一次开发,多端部署场景下,Navigation ...

  5. Codeforces Round 975 Div.2 C题 解析

    C题 题目链接:Problem - C - Codeforces 题目描述 思路 对于这道题,首先我们能想到最小的组数肯定是数量最多的那个卡片的数量(mx),因为这个值的每一个卡片不能在同一个组里面. ...

  6. 鸿蒙hvigor构建任务依赖与生命周期简介

    Hivgor脚本文件 在构建的生命周期中Hvigor使用两个脚本文件来完成插件.任务以及生命周期hook的注册: hvigorconfig.ts:此文件在整个项目中只有根目录下存在一份,不是构建必须的 ...

  7. Python网络爬虫之requests模块1

    Python网络爬虫之requests模块(1) 引入 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 警告:非专业使用其他 HTTP 库会导致危险的副作用,包 ...

  8. 反汇编动态调试器之x64dbg

    转载:https://cloud.tencent.com/developer/article/2337843 x64dbg 是一款开源.免费.功能强大的动态反汇编调试器,它能够在Windows平台上进 ...

  9. elementUI 表格之合并同类项(包括行和列)

    mergeSpan(tableData, arr) { //["areName","indexCode"] let spanArr = new Array(ta ...

  10. 【返回值】定义泛型JSON

    /** * 定义统一的Json结构 * 由于封装的Json数据的类型不确定,所以在定义统一的json结构时,我们需要用到泛型. * 统一的json结构中属性包括:数据.状态码.提示信息即可. * 构造 ...