Android 9上如何明文(http)方式傳輸數據--Cleartext traffic not permitted

如今的android系統越來越注重用戶個人信息安全,比如最近的幾個版本對於明文傳輸數據控制的越來越嚴格,

就拿最新的Andorid 9而言,默認已經禁止明文傳輸,如果你的app的targetversion值是28以上,使用http開頭的url訪問就會報出如下錯誤

Cleartext traffic not permitted:xxxx

這種問題怎麼解決呢,谷歌肯定是希望大家都使用https開頭的url訪問,不過可能有些開發者還沒有來得及將自己的服務支持https,所以android系統還是給我們留了一個簡單的處理方式;

方式1

不要使用太高的targetversion,26以及以前的版本還是可以正常訪問http

方式2

在AndroidMainifest的加入android:usesCleartextTraffic

 <application
    android:usesCleartextTraffic="true"/>

方式3

在AndroidMainifest的加入networkSecurityConfig="@xml/network_security_config"

 <application
    networkSecurityConfig="@xml/network_security_config"/>

network_security_config放到xml目錄下

內容如下

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <!--允許所有url使用http明文請求服務 比如外部的地址,或者一些ip測試地址-->
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

還可以設置只允許部分域名http訪問

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <!--<base-config cleartextTrafficPermitted="true" />-->
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">sample.domain.com</domain>
    </domain-config>
</network-security-config>

 

方式4(推薦)

url改成https 

 

發佈了8 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章