首先里面清楚字面意思: 不允許明文HTTP訪問(wèn)方式
理解字面意思之后,我們可以打開(kāi)google官網(wǎng),找到Android的http安全配置說(shuō)明文檔
大概意思是說(shuō),所有連接都應(yīng)該使用安全連接( TLS 和 HTTPS 加密協(xié)議)默認(rèn)均信任預(yù)裝的系統(tǒng) CA,而以 Android 6.0(API 級(jí)別 23)及更低版本為目標(biāo)平臺(tái)的應(yīng)用默認(rèn)情況下還是默認(rèn)保留信任用戶添加的 CA 存儲(chǔ)區(qū)。因此可以使用 base-config或 domain-config自定義自己的連接。
默認(rèn)Android 9 (API level 28) 及以上版本是加密協(xié)議(HTTPS)訪問(wèn)方式,如果需要你是以前的項(xiàng)目,需要往下兼容,需要修改默認(rèn)配置。
<network-security-config><base-configcleartextTrafficPermitted="true"><trust-anchors><certificatessrc="system"/></trust-anchors></base-config></network-security-config>
如果你需要兼容Android 7.0 (API level 24) to Android 8.1 (API level 27),則需要設(shè)置 cleartextTrafficPermitted=“true”,這樣就可以開(kāi)啟允許明文的訪問(wèn)方式
<network-security-config><base-configcleartextTrafficPermitted="true"><trust-anchors><certificatessrc="system"/><certificatessrc="user"/></trust-anchors></base-config></network-security-config>
如果你需要兼容Android 6.0 (API level 23) 及以下的版本,方式跟上面一直,只是額外配置 < certificates src=“user” >
解釋一下上面所用到的節(jié)點(diǎn)
1.network-security-config 網(wǎng)絡(luò)安全基礎(chǔ)配置
2.base-config 表示你可以不指定或者指定一個(gè)證書(shū)配置文件
3.trust-anchors 網(wǎng)絡(luò)證書(shū)集合,可以把安全證書(shū)配置在這個(gè)節(jié)點(diǎn)下面
4.certificates 是trust-anchors 子類節(jié)點(diǎn),也就是證書(shū)的路徑,系統(tǒng)默認(rèn)值 [“system” | “user” | “raw resource”]
(system 預(yù)裝系統(tǒng) CA 證書(shū))
(user 用戶添加的 CA 證書(shū))
(raw resource CA 證書(shū)路徑)
之后我們?cè)?AndroidManifest.xml 文件下面配置network_security_config.xml
配置方式如下:
< application?
? android:networkSecurityConfig="@xml/network_security_config"? ? ?
< /application>
end-----------------------------------
以上是官方推薦的配置方案,如果覺(jué)得我這里描述不是很清楚的,可以直接打開(kāi)官網(wǎng),找到相對(duì)應(yīng)的配置文檔查看即可
本人菜鳥(niǎo)一枚,不足之處,還望指點(diǎn)