WebView无法加载页面报错 net:ERR_CLEARTEXT_NOT_PERMITTED 还有webView加载网页后出现ERR_UNKNOWN_URL_SCHEME

根据网络安全配置-
从Android 9(API级别28)开始,默认情况下禁用明文支持。因此http的url均无法在webview中加载
还可以看看-https: //koz.io/android-m-and-the-war-on-cleartext-traffic/
Codelabs解释- https://codelabs.developers.google.com/codelabs/android-network-security-config/index.html
如果应用使用的是非加密的明文流量的http请求,则会导致该请求无法成功,而https请求则不会受影响。
针对这个问题,我看了一下共有三种解决方法。
1)使用Https请求替换Http请求。既然官方都说了用Https更安全,那就替换成Https。
2)将targetSdkVersion降到27以下。曲线救国,既然从28开始不支持Http,那么我就用28以下的版本。
3)更改网络安全配置
第一种与第三种是网上比较多多的解决方案,一个就是使用更安全的https,另一个方法就是在清单文件中做一下配置,使用未加密信息传输。
<application
....
android:usesCleartextTraffic="true"
....>
....
</application>
解决办法:根本上选项一即可,其他解决办法是在不得已的情况下
选项1 -
从根本解决问题,用安全的HTTPS协议 eg: "https://" 替换 "http://"
首先尝试用“ https://”而不是“ http://”打入URL
选项2-
创建文件res / xml / network_security_config.xml-
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">api.example.com(to be adjusted)</domain>
</domain-config>
</network-security-config>
在application节点添加 android:networkSecurityConfig="@xml/network_security_config" 引用
AndroidManifest.xml-
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...>
...
</application>
</manifest>
选项3-
android:usesCleartextTraffic Doc
在 AndroidManifest.xml 文件中的application节点添加 android:usesCleartextTraffic="true"。
AndroidManifest.xml-
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
正如@ david.s的答案所指出的,这android:targetSandboxVersion也可能是一个问题-
根据清单文件-
android:targetSandboxVersion此应用要使用的目标沙箱。沙盒版本号越高,安全级别越高。默认值为1;默认值为1。您也可以将其设置为2。将此属性设置为2会将应用程序切换到其他SELinux沙箱。以下限制适用于2级沙箱:
usesCleartextTraffic网络安全配置中的默认值为false。- 不允许共享Uid。
所以选项4-
如果有android:targetSandboxVersion,<manifest>则减少到1
AndroidManifest.xml-
<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest>
- 在最新的P版本中似乎还必须再迈出一步?请参阅我的问题stackoverflow.com/questions/51770323/…–spartygw
- 将选项1从domain-config更改为base-config可以解决此问题针对此问题的最佳解决方案:使用HTTPS。此答案中提到的选项只能是不得已的方法。
(选项二)第二种办法
<application
android:networkSecurityConfig="@xml/network_security_config"
...>
和:
res / xml / network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
(选项二)第三种方法
<application
....
android:usesCleartextTraffic="true"
....>
更新:如果您具有网络安全性配置,例如:android:networkSecurityConfig="@xml/network_security_config"
如上所示,无需将明文流量设置为true,而使用以下代码:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
....
....
</domain-config>
<base-config cleartextTrafficPermitted="false"/>
</network-security-config> 以上是开发中遇到的问题,后期有时间还会继续整理,或者您有更好的解决方法,添加更加完善,不胜感激。欢迎留言交流,
书山有路勤为径,学海无涯苦作舟!!!
WebView无法加载页面报错 net:ERR_CLEARTEXT_NOT_PERMITTED 还有webView加载网页后出现ERR_UNKNOWN_URL_SCHEME的更多相关文章
- 分析https网页加载http资源导致的页面报错原因及其解决方案
https网页加载http资源导致的页面报错及解决方案 https是当下的网站的主流趋势,甚至像苹果这样的大公司,则完全要求用户必须使用https地址. 然而对于以前http链接来说,我们往往就存在一 ...
- C#拖曳控件加载,bll报错问题
C#拖曳控件加载,bll报错问题,加载时实例如化bll时加上一个判断 if (!(GetService(typeof(IDesignerHost)) != null || Sys ...
- jsp页面报错(一)
jsp页面报错 1.错误位置 <form action="../page/areaType.action" method="POST"> <j ...
- SharePoint2007 管理中心TimerJob”计时器作业定义”页面报错
部署完成自己开发的TimerJob,发现"计时器作业定义"页面报错,进不去了,但是TimerJob可以正常运行,这样,肯定不行的,估计还是代码有问题,把这个脆弱的sharepoin ...
- 新建SpringBoot项目运行页面报错Whitelabel Error Page This application has no explicit mapping for /error, so yo
新建SpringBoot项目运行页面报错Whitelabel Error Page This application has no explicit mapping for /error, so yo ...
- Jenkins安装时Web页面报错提示离线安装
先跳过所有. 方法1 先看它的提示:”参考离线Jenkins安装文档“发现链接点不开,我还以为是被墙了呢,FQ以后还是打不开.看来这个参考文档是没有用滴.点击配置HTTP代理跳出如下界面:安装Jenk ...
- 解决在Vue项目中时常因为代码缩进导致页面报错的问题
前言 如果我们初次使用vue-cli来构建单页SPA应用,在撸代码的过程中有可能会遇到这种因为代码缩进导致 页面报错的问题,导致我们烦不胜烦.接下来我们就来看一看如何解决这个小问题... erro原因 ...
- 数据库到jsp页面报错(一)
数据库到jsp页面报错(一) 这个错误的确比较坑. 控制台: 页面: 解决: 神坑啊!!!
- PHP开启页面报错的代码
PHP开启页面报错的方法很简单,在<?php内加入下面的代码就可以了: <?php ini_set("display_errors", "On"); ...
- https的页面内嵌入http页面报错的问题
1.https的页面内嵌入http页面报错 在HTTPS的页面上嵌入http的页面时,浏览器会直接报错.比如在HTTPS页面上用 iframe 直接嵌入一个 http 页面,比如我们可以在百度上直接嵌 ...
随机推荐
- 【K哥爬虫普法】12亿公民信息泄露,仅判3年,个人信息是否为爬虫“禁区”?
我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...
- Apache Typecho框架启用地址重写
地址重写有利于SEO优化,开启地址重写可以去掉Typecho框架中的index.php后缀,该后缀如下. 第一步,进到apache配置文件目录下cat /etc/httpd/conf/httpd.co ...
- Exception message: CreateSymbolicLink error (1314): ???????????
window下运行任务报错:Exception message: CreateSymbolicLink error (1314): ??????????? 报错信息如下: Diagnostics: E ...
- Java并发(七)----线程sleep、yield、线程优先级
1.sleep 与 yield sleep 调用 sleep 会让当前线程从 Running 进入 Timed Waiting 状态(阻塞) 其它线程可以使用 interrupt 方法打断正在睡眠的线 ...
- 零基础入门学习Java之注解与反射
Java反射 Java的程序为什么能在JVM虚拟机中跑起来?接下来将深入探讨下Java虚拟机类加载的机制 1.类的加载 整个Java内存可以分为三大板块 堆 存放new的数组.对象等 栈 存基本变量类 ...
- <semaphore.h> 和 <sys/sem.h> 的区别
<sys/sem.h>为 XSI(最初是 Unix System V)信号量提供接口. 这些不是基本 POSIX 标准的一部分(它们在 XSI 选项中,主要是为了传统的 Unix 兼容性) ...
- JAVA生成随机数工具类RandomStringUtils详解
public static String random(int count, boolean letters, boolean numbers) /** * count 创建一个随机字符串,其长度是指 ...
- 《ASP.NET Core 微服务实战》-- 读书笔记(第7章)
第 7 章 开发 ASP.NET Core Web 应用 ASP.NET Core 基础 在本章,我们将从一个命令行应用开始,并且在不借助任何模板,脚手架和向导的情况下,最终得到一个功能完整的 Web ...
- C++ 单例模式以及内存管理
引用: https://zhuanlan.zhihu.com/p/37469260 https://www.cnblogs.com/xiaolincoding/p/11437231.html http ...
- NC53079 Forsaken喜欢数论
题目链接 题目 题目描述 Forsaken有一个有趣的数论函数.对于任意一个数 \(x\) , \(f(x)\) 会返回 \(x\) 的最小质因子.如果这个数没有最小质因子,那么就返回0. 现 ...