Android-高バージョンhttpネットワーク要求失敗

1659 ワード

原文のリンク:https://blog.csdn.net/gengkui9897/article/details/82863966
はじめに
ユーザーデータとデバイスの安全を保証するために、Googleは次世代Androidシステム(Android P)のアプリケーションに対して、デフォルトで暗号化された接続を使用することを要求します.これはAndroid PがAppが暗号化されていないすべての接続を使用することを禁止することを意味します.したがって、Android Pシステムを実行するAndroidデバイスは、トラフィックを受信しても送信しても、将来はコード送信できないので、次世代トランスポート層セキュリティプロトコルを使用する必要があります.Android NougtとOreoは影響を受けません.
二、問題
Android Pシステムのデバイスにおいて、非暗号化された平文流量のhttpネットワーク要求が適用されると、このアプリケーションはネットワーク要求ができなくなり、httpsは影響を受けない.同様に、webviewがネストされている場合、webviewはhttps要求のみを使用することができる.
Android PでHttpUrlConnectionを使用してhttp要求を行うと以下のような異常が発生します.
 W/System.err: java.io.IOException: Cleartext HTTP traffic to **** not permitted
OKHttpを使って要求すると、出現します.
java.net.UnknownServiceException: CLEARTEXT communication to **** not permitted by network security policy
三、解決策
このような状況に対して、以下の4つの解決策がある.
  • APPをhttpsに変更して要求します.条件がよければ、安全性を高めるために使用することを提案します.
  • Androidでコンパイルされたtarget Sdk Versionは27以下に変更されました.高いバージョンですから、それは次元を下げることができます.
  • Anroid Manifest.xmlのapprationに設定項目を追加します.
  • は、ネットワークセキュリティ構成を追加する.resのxmlディレクトリの下に、network_を新規作成します.securityconfig.xmlファイル(名前は随意に取ります):
    
    
        
    
    
    その後、Anroid Manifest.xmlのapprationにこのファイルを指す設定項目を追加します.
    
    
  • このうち、第1案、第2案には条件があり、第4案には第3種の拡張が使われています.私たちが一般的に使うには、特別なセキュリティポリシーを使う必要はありません.
    総合的に考えて、第3案は個人的にはいいと思います.簡単で、簡潔です.