4 回答
TA贡献1772条经验 获得超5个赞
如果您的 URL 以开头,http
那么您必须在 Android Pie 中使用它,即 API 级别 28
android:usesCleartextTraffic="true"
在应用程序标记内的清单中作为属性
TA贡献1862条经验 获得超6个赞
这可能是因为您正在使用http
. 从 Android O 开始,需要使用https
instead ofhttp
否则会报错Cleartext HTTP traffic to * not permitted
。因此,您需要创建一个配置以允许这样做。您可以参考选择退出明文流量
文件详情:
注意:本节中的指南仅适用于面向 Android 8.1(API 级别 27)或更低版本的应用。从 Android 9(API 级别 28)开始,明文支持默认禁用。
打算仅使用安全连接连接到目标的应用程序可以选择不支持到这些目标的明文(使用未加密的 HTTP 协议而不是 HTTPS)。此选项有助于防止由于后端服务器等外部源提供的 URL 更改而导致应用程序意外回归。有关
NetworkSecurityPolicy.isCleartextTrafficPermitted()
更多详细信息,请参阅。例如,应用程序可能希望确保所有连接
secure.example.com
始终通过 HTTPS 完成,以保护来自敌对网络的敏感流量。
res/xml/network_security_config.xml
:<?xml version="1.0" encoding="utf-8"?><network-security-config> <domain-config cleartextTrafficPermitted="false"> <domain includeSubdomains="true">secure.example.com</domain> </domain-config></network-security-config>
.
你也可以android:usesCleartextTraffic="true"
在你AndroidManifest.xml
的开发模式下使用,但你不应该在发布模式下使用它。Android 开发者博客中有关它的更多详细信息,这里是摘录:
阻止生产中的明文流量
为了保护您的应用程序的安装基础免受明文流量的回归,请在应用程序的 AndroidManifest.xml 中的应用程序元素上声明 android:usesCleartextTraffic=”false” 属性。这声明了应用程序不应该使用明文网络流量,并使 Android Marshmallow 的平台网络堆栈阻止应用程序中的明文流量。例如,如果您的应用不小心尝试通过明文 HTTP 请求登录用户,该请求将被阻止,并且用户的身份和密码不会泄露到网络。
您不必将应用的 minSdkVersion 或 targetSdkVersion 设置为 23 (Android Marshmallow) 即可使用 android:usesCleartextTraffic。在较旧的平台上,此属性会被忽略,因此无效。
请注意,WebView 尚不支持此功能。
在某些情况下,明文流量可能仍会离开或进入应用程序。例如,Socket API 忽略了明文策略,因为它不知道它传输或接收的数据是否可以归类为明文。另一方面,Android 平台 HTTP 堆栈遵守该策略,因为它们知道流量是否为明文。
Google AdMob 也是为了遵守此政策而构建的。当您的应用声明它不使用明文流量时,应仅向应用投放 HTTPS 广告。
鼓励第三方网络、广告和分析库添加对此策略的支持。他们可以通过 NetworkSecurityPolicy 类查询明文流量策略。
TA贡献2016条经验 获得超9个赞
在 AndroidManifest.xml 文件中添加以下代码行:
android:usesCleartextTraffic="true"
虽然,这会给你警告:
它会暂时解决问题。但是您应该尽快迁移到“HTTPS”。
添加回答
举报