Android高版本http網絡請求失敗的Cordova配置處理
小編:管理員 658閱讀 2022.09.13
參考此文追加說明及處理方案:Android P http網絡請求失敗
問題出現的原因是因為Android高版本(Android 6.0)以上默認使用TLS保護用戶信息,詳見以下文檔: Transport Layer Security
摘錄關鍵信息如下:
Android致力于保證其用戶、設備和數據的安全。我們保證數據安全的一種方式是通過保護所有進入或離開使用TLS技術的Android設備數據。正如我們在Android P開發人員預覽版中所宣布的那樣,我們通過默認阻止Android P應用使用未加密連接通信來進一步提升安全性。 這是我們多年來為保護Android用戶所做的各種更改。為了防止意外的未加密連接,我們在Android Marshmallow(安卓6.0)中引入了android:usesCleartextTraffic 這樣一個manifest屬性。在Android Nougat(安卓7.0)中,我們通過創建網絡安全配置(Network Security Config)功能擴展了該屬性,該功能允許應用程序警告開發者在沒有加密的情況下發送網絡流量。在Android Nougat(安卓7.0)和Oreo(安卓8.0)中,我們仍然允許明文連接。
簡單地說,在Android高版本對非加密的明文傳輸有要求,也即默認啟用了TLS保護,使得該應用無法進行http網絡請求,而https則不會受影響,同樣地,如果應用嵌套了webview也會受這限制。
針對這種情況,有以下解決方案:
- 使用https。條件允許的話,建議使用,以增強安全性。
- Android編譯的targetSdkVersion改為27以下。因為是高版本才出現的,那可以降維處理;
-
在AnroidManifest.xml中的application添加設置項:
- 添加網絡安全配置。在res的xml目錄下,新建一個network_security_config.xml文件(名稱隨便。
復制
然后在AnroidManifest.xml中的application添加指向該文件的設置項:android:networkSecurityConfig="@xml/network_security_config"
其中,第1、2種方案都是有條件要求的,而第4種是第3種的擴展使用。對于我們一般使用來說,其實也不需要用到特別的安全策略。
綜合考量,第3種方案個人認為會好點,Cordova配合其使用也很簡單:
在config.xml文件中,在
復制
這樣Cordova build的時候就會把上面配置合并到AnroidManifest.xml中。
相關推薦
- Cordova 什么是Cordova? Cordova是用于使用HTML,CSS和JS構建移動應用的平臺。我們可以認為Cordova是一個容器,用于將我們的網絡應用程序與本機移動功能連接。默認情況下,Web應用程序不能使用本機移動功能。這就是Cordova進來的地方。它為網絡應用和移動設備之間的連…
- Hibernate Criterion 在查詢方法設計上能夠靈活的依據Criteria的特點來方便地進行查詢條件的組裝.Hibernate設計了CriteriaSpecification作為Criteria的父接口,以下提供了Criteria和DetachedCriteria.Criteria和DetachedCriteria的主要差別在于創建的形式不一樣,Criteria是在線的,所…