如何在Android(9)Pie中允许所有网络连接类型HTTP和HTTPS?
2022-08-31 06:17:39
从现在的Android 9 Pie开始,没有加密的请求将永远不会起作用。默认情况下,系统将期望您在默认情况下使用TLS。您可以在此处阅读此功能因此,如果您仅通过HTTPS发出请求,那么您是安全的。但是,通过不同站点发出请求的应用程序(例如,类似浏览器的应用程序)呢?
如何在 Android 9 Pie 中启用对所有类型的连接 HTTP 和 HTTPS 的请求?
从现在的Android 9 Pie开始,没有加密的请求将永远不会起作用。默认情况下,系统将期望您在默认情况下使用TLS。您可以在此处阅读此功能因此,如果您仅通过HTTPS发出请求,那么您是安全的。但是,通过不同站点发出请求的应用程序(例如,类似浏览器的应用程序)呢?
如何在 Android 9 Pie 中启用对所有类型的连接 HTTP 和 HTTPS 的请求?
实现此目的的简单方法是将此属性用于允许所有请求的所有属性:AndroidManifest.xmlhttp
<application android:usesCleartextTraffic="true">
</application>
但是,如果您希望为不同的链接进行更多配置,例如,允许某些域但不允许其他域,则必须提供文件。httpres/xml/networkSecurityConfig.xml
要在Android 9 Pie中执行此操作,您必须在清单中设置一个如下所示的清单标签:networkSecurityConfigapplication
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>
然后,在您的文件夹中,您现在必须创建一个文件,就像您在清单中命名它的方式一样,从那里开始,文件的内容应该如下所示,以启用所有请求而无需加密:xmlnetwork_security_config
<?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>
从那里你很好。现在,你的应用将对所有类型的连接发出请求。有关此主题的其他信息,请阅读此处。
对于面临此问题的Android或React原生用户来说,完全有效的解决方案只需将其添加到AndroidManifest.xml文件中,如下所示:android:usesCleartextTraffic="true"
android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning">
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
介于.. 标记中,如下所示:<application></application>
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:allowBackup="false"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning">
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
<activity
android:name=".MainActivity"
android:label="@string/app_name"/>
</application>