Android高版本http網絡請求失敗的Cordova配置處理

                        小編:管理員 265閱讀 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也會受這限制。

                        針對這種情況,有以下解決方案:

                        1. 使用https。條件允許的話,建議使用,以增強安全性。
                        2. Android編譯的targetSdkVersion改為27以下。因為是高版本才出現的,那可以降維處理;
                        3. 在AnroidManifest.xml中的application添加設置項:<application android:usesCleartextTraffic="true">
                        4. 添加網絡安全配置。在res的xml目錄下,新建一個network_security_config.xml文件(名稱隨便。
                        <?xml version="1.0" encoding="utf-8"?>
                        <network-security-config>
                            <base-config cleartextTrafficPermitted="true" />
                        </network-security-config>
                        復制

                        然后在AnroidManifest.xml中的application添加指向該文件的設置項:android:networkSecurityConfig="@xml/network_security_config"

                        其中,第1、2種方案都是有條件要求的,而第4種是第3種的擴展使用。對于我們一般使用來說,其實也不需要用到特別的安全策略。

                        綜合考量,第3種方案個人認為會好點,Cordova配合其使用也很簡單:

                        在config.xml文件中,在<platform name="android"/>節點內添加配置項即可:

                        <edit-config file="AndroidManifest.xml" mode="merge" 
                        target="/manifest/application">
                                    <activity android:usesCleartextTraffic="true" />
                                </edit-config>
                        復制

                        這樣Cordova build的時候就會把上面配置合并到AnroidManifest.xml中。

                        關聯標簽:
                        少妇各种各样BBBⅩXX