cordova 请求http接口或socket失败

当前环境

targetSdkVersion: 28
vue: 2.6.11
cordova-android: 8.1.0

问题

最近将webApp打包成android APP之后发现无法HTTP通信,但是通过访问浏览器ip,是可以HTTP通信的!
如图通过vconsole插件可以看到HTTP接口没有返回!
cordova 请求http接口或socket失败_第1张图片

出现问题的原因

问题出现的原因是因为Android高版本(Android 6.0)以上默认使用TLS保护用户信息,在Android高版本对非加密的明文传输有要求,也即默认启用了TLS保护,使得该应用无法进行http网络请求,而https则不会受影响,同样地,如果应用嵌套了webview也会受这限制。

解决方法

  1. 最快捷的方式: 在config.xml中添加
    
           
    
    

这样Cordova build的时候就会把上面配置合并到AnroidManifest.xml中(个人使用的是这种方式,成功!)
这种本质就是在AnroidManifest.xml中添加:


  1. 使用https。条件允许的话,建议使用,以增强安全性。

  2. 降低Android编译的targetSdkVersion改为27以下。因为是高版本才出现的,那可以降维处理。

  3. 添加网络安全配置(没测试过)。

    在res的xml目录下,新建一个network_security_config.xml文件(名称随便取):

    
    	
    	    
    	
    

    然后在AnroidManifest.xml中的application添加指向该文件的设置项:

    android:networkSecurityConfig="@xml/network_security_config"
    

    参考:
    Android高版本http网络请求失败的Cordova配置处理

你可能感兴趣的:(cordova)