질문자 :david.s
Android 8 사용자로부터 내 앱(백엔드 피드 사용)에 콘텐츠가 표시되지 않는다는 보고를 받았습니다. 조사 후 Android 8에서 다음 예외가 발생하는 것을 발견했습니다.
08-29 12:03:11.246 11285-11285/ E/: [12:03:11.245, main]: Exception: IOException java.io.IOException: Cleartext HTTP traffic to * not permitted at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:458) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127) at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.doConnection(AbstractHttpAsyncTask.java:207) at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.extendedDoInBackground(AbstractHttpAsyncTask.java:102) at com.deiw.android.generic.tasks.AbstractAsyncTask.doInBackground(AbstractAsyncTask.java:88) at android.os.AsyncTask$2.call(AsyncTask.java:333) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764)
(패키지 이름, URL 및 기타 가능한 식별자를 제거했습니다)
Android 7 이하에서는 모든 것이 작동하며 Manifest에서 android:usesCleartextTraffic
true
설정해도 도움이 되지 않습니다. 어쨌든 기본값임) 네트워크 보안 정보도 사용하지 않습니다. NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted()
호출하면 동일한 apk 파일을 사용하여 Android 8의 경우 false
를 반환 true
Android O에 대한 Google 정보에서 이에 대한 언급을 찾으려 했지만 성공하지 못했습니다.
네트워크 보안 구성에 따라 -
Android 9(API 레벨 28)부터 일반 텍스트 지원은 기본적으로 비활성화되어 있습니다.
Android M과 일반 텍스트 트래픽과의 전쟁도 살펴보세요.
Google의 Codelab 설명
옵션 1 -
먼저 "http://" 대신 "https://"로 URL을 입력해 보십시오.
옵션 2 -
res/xml/network_security_config.xml 파일 생성 -
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">api.example.com(to be adjusted)</domain> </domain-config> </network-security-config>
AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?> <manifest ...> <uses-permission android:name="android.permission.INTERNET" /> <application ... android:networkSecurityConfig="@xml/network_security_config" ...> ... </application> </manifest>
옵션 3 -
android:usesCleartextTraffic Doc
AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?> <manifest ...> <uses-permission android:name="android.permission.INTERNET" /> <application ... android:usesCleartextTraffic="true" ...> ... </application> </manifest>
또한 @david.s의 답변이 지적했듯이 android:targetSandboxVersion
도 문제가 될 수 있습니다.
매니페스트 문서 에 따르면 -
android:targetSandboxVersion
이 앱이 사용할 대상 샌드박스입니다. 샌드박스 버전 번호가 높을수록 보안 수준이 높아집니다. 기본값은 1입니다. 2로 설정할 수도 있습니다. 이 속성을 2로 설정하면 앱이 다른 SELinux 샌드박스로 전환됩니다. 레벨 2 샌드박스에는 다음 제한 사항이 적용됩니다.
- 네트워크 보안 구성에서
usesCleartextTraffic
의 기본값은 false입니다. - Uid 공유는 허용되지 않습니다.
그래서 옵션 4 -
<manifest>
에 android:targetSandboxVersion
있는 경우 1
로 줄이십시오.
AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?> <manifest android:targetSandboxVersion="1"> <uses-permission android:name="android.permission.INTERNET" /> ... </manifest>
Hrishikesh KadamAndroid 9의 내 문제는 http가 있는 도메인을 통해 webview를 탐색하는 것이었습니다. 이 답변의 솔루션
<application android:networkSecurityConfig="@xml/network_security_config" ...>
그리고:
res/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config>
Pablo CegarraAndroidManifest에서 다음 매개변수를 찾았습니다.
android:networkSecurityConfig="@xml/network_security_config"
@xml/network_security_config는 network_security_config.xml에 다음과 같이 정의됩니다.
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <!--Set application-wide security config using base-config tag.--> <base-config cleartextTrafficPermitted="false"/> </network-security-config>
그냥 cleartextTrafficPermitted를 true로 변경했습니다.
byOnti디버깅하는 동안에만 일반 텍스트를 허용하지만 프로덕션에서는 일반 텍스트를 거부하는 보안 이점을 유지할 수 있습니다. https를 지원하지 않는 개발 서버에 대해 내 앱을 테스트하기 때문에 이것은 나에게 유용합니다. 다음은 프로덕션에서 https를 적용하지만 디버그 모드에서 일반 텍스트를 허용하는 방법입니다.
build.gradle에서:
// Put this in your buildtypes debug section: manifestPlaceholders = [usesCleartextTraffic:"true"] // Put this in your buildtypes release section manifestPlaceholders = [usesCleartextTraffic:"false"]
AndroidManifest.xml의 애플리케이션 태그에서
android:usesCleartextTraffic="${usesCleartextTraffic}"
Tyler가능하면 URL을 HTTP
에서 HTTPS
변경하십시오.
그것은 작동합니다!
eli<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">***Your URL(ex: 127.0.0.1)***</domain> </domain-config> </network-security-config>
위에 제공된 제안에서 내 URL을 http://xyz.abc.com/mno/로 제공했습니다.
xyz.abc.com으로 변경한 다음 작동하기 시작했습니다.
Lorence좋습니다, 그것은 ⇒⇒ 아닙니다 ⇐⇐ 당신의 Manifest 에 그것을 추가하는 것을 수천 번 반복하지만, 이것을 기반으로 한 힌트이지만 추가 혜택 (그리고 아마도 약간의 배경 정보)을 제공합니다.
Android에는 src-Directory에 대한 일종의 덮어쓰기 기능이 있습니다.
기본적으로
/앱/src/ 메인
Community Wiki누군가에게 유용할 수 있습니다.
우리는 최근에 Android 9에 대해 동일한 문제를 겪었지만 WebView 내에서 일부 URL만 표시하면 되며 특별한 것은 없었습니다. android:usesCleartextTraffic="true"
를 추가하면 효과가 있었지만 이를 위해 전체 앱의 보안을 손상시키고 싶지 않았습니다. http
에서 https
로 변경하는 것이었습니다.
sparkly_frogReact Native 프로젝트의 경우
RN 0.59에서 이미 수정되었습니다. 0.58.6에서 0.59로의 업그레이드 차이에서 찾을 수 있습니다. 아래 단계에 따라 RN 버전을 업그레이드하지 않고 적용할 수 있습니다.
파일 생성:
안드로이드/앱/src/ 디버그 /res/xml/react_native_config.xml -
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="false">localhost</domain> <domain includeSubdomains="false">10.0.2.2</domain> <domain includeSubdomains="false">10.0.3.2</domain> </domain-config> </network-security-config>
안드로이드/앱/src/ 디버그 /AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <application tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" android:networkSecurityConfig="@xml/react_native_config" /> </manifest>
근본 원인을 알기 위해 허용된 답변을 확인하십시오.
Erick M. Sprengel이미 있는 Android 매니페스트 파일에서 이 줄을 제거했습니다.
android:networkSecurityConfig="@xml/network_security_config"
그리고 추가
android:usesCleartextTraffic="true"
이것을 매니페스트의 애플리케이션 태그에 입력
<application android:usesCleartextTraffic="true" android:allowBackup="true" android:label="@string/app_name" android:largeHeap="true" android:supportsRtl="true" android:theme="@style/AppTheme" >
그러면 Android 9 및 10에서 오버레이.openstreetmap.nl에 대한 이 오류 Cleartext HTTP 트래픽이 허용되지 않았습니다.
creativecoder좋아, 나는 이것을 알아 냈다. Manifest 매개변수 android:targetSandboxVersion="2"
인해 Instant App 버전도 추가되었습니다. 사용자가 Instant App에서 일반 앱으로 업그레이드한 후에는 데이터가 손실되지 않도록 해야 합니다. 옮기다. 그러나 모호한 설명에서 알 수 있듯이:
이 앱이 사용하려는 대상 샌드박스를 지정합니다. sanbox 버전이 높을수록 보안 수준이 높아집니다.
이 속성의 기본값은 1입니다.
또한 적어도 Android 8에서는 분명히 새로운 수준의 보안 정책을 추가합니다.
david.s매니페스트 파일에 ... android:usesCleartextTraffic="true" ... 를 추가하면 문제가 해결되는 것처럼 보일 수 있지만 데이터 무결성에 위협이 됩니다.
보안상의 이유로 매니페스트 파일 내에서 android:usesCleartextTraffic 과 함께 매니페스트 자리 표시자를 사용했습니다(예: @ Hrishikesh Kadam 의 응답에서 허용된 답변의 옵션 3 ). 디버그 환경에서만 일반 텍스트를 허용합니다.
내 build.gradle(:app) 파일 안에 다음과 같은 매니페스트 자리 표시자를 추가했습니다.
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { manifestPlaceholders.cleartextTrafficPermitted ="true" } }
위의 이 줄에서 자리 표시자 이름 cleartextTrafficPermitted를 확인하세요.
manifestPlaceholders.cleartextTrafficPermitted ="true"
그런 다음 내 Android 매니페스트에서 동일한 자리 표시자를 사용했습니다 ...
AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?> <manifest ...> <uses-permission android:name="android.permission.INTERNET" /> <application ... android:usesCleartextTraffic="${cleartextTrafficPermitted}" ...> ... </application> </manifest>
이를 통해 일반 텍스트 트래픽은 디버그 환경에서만 허용됩니다.
Sam Shaba간단하고 쉬운 솔루션 [Xamarin Form]
안드로이드용
-
Android Project
로 이동한 다음 Properties
을 클릭합니다.
-
AssemblyInfo.cs
열고 이 코드를 바로 여기에 붙여넣습니다. [assembly: Application(UsesCleartextTraffic =true)]
iOS용
NSAppTransportSecurity
사용:
info.plist
파일의 NSAppTransportSecurity
사전에서 NSAllowsArbitraryLoads
키를 YES
로 설정해야 합니다.
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
Hemant Ramphul이러한 다양한 답변을 Xamarin.Android
AndroidManifest.xml
수동으로 편집하는 대신 클래스 및 어셈블리 수준 특성을 사용할 수 있습니다.
물론 인터넷 허가가 필요합니다 (duh..):
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
참고: 일반적으로 어셈블리 수준 특성은 AssemblyInfo.cs
using
namespace
위의 모든 파일이 작동합니다.
그런 다음 애플리케이션 하위 클래스(필요한 경우 생성)에서 Resources/xml/ZZZZ.xml
파일에 대한 참조와 함께 NetworkSecurityConfig
#if DEBUG [Application(AllowBackup = false, Debuggable = true, NetworkSecurityConfig = "@xml/network_security_config")] #else [Application(AllowBackup = true, Debuggable = false, NetworkSecurityConfig = "@xml/network_security_config"))] #endif public class App : Application { public App(IntPtr javaReference, Android.Runtime.JniHandleOwnership transfer) : base(javaReference, transfer) { } public App() { } public override void OnCreate() { base.OnCreate(); } }
Resources/xml
폴더에 파일을 생성합니다(필요한 경우 xml
xml/network_security_config
파일 예, 필요에 따라 조정(다른 답변 참조)
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">www.example.com</domain> <domain includeSubdomains="true">notsecure.com</domain> <domain includeSubdomains="false">xxx.xxx.xxx</domain> </domain-config> </network-security-config>
ApplicationAttribute
UsesCleartextTraffic
매개변수를 사용할 수도 있습니다.
#if DEBUG [Application(AllowBackup = false, Debuggable = true, UsesCleartextTraffic = true)] #else [Application(AllowBackup = true, Debuggable = false, UsesCleartextTraffic = true))] #endif
SushiHangover2019년 12월 업데이트 ionic - 4.7.1
<manifest xmlns:tools=“http://schemas.android.com/tools”> <application android:usesCleartextTraffic=“true” tools:targetApi=“28”>
Android 매니페스트 .xml 파일에 위의 내용을 추가하세요.
이전 버전의 ionic
Ionic Project config.xml
에 다음이 있는지 확인하십시오.
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android"> <application android:networkSecurityConfig="@xml/network_security_config" /> <application android:usesCleartextTraffic="true" /> </edit-config>
ionic Cordova 빌드 안드로이드를 실행합니다. Platforms 아래에 Android 폴더를 생성합니다.
Android Studio를 열고 프로젝트 project-platforms-android에 있는 Android 폴더를 엽니다. gradle이 빌드되도록 몇 분 동안 그대로 두십시오.
gradle build
가 완료된 후 manifest.xml
minSdVersion
을 포함하는 데 몇 가지 오류가 발생합니다. 이제 manifest.xml
<uses-sdk android:minSdkVersion="19" />
제거하면 됩니다.
다음 두 위치에서 모두 제거되었는지 확인합니다.
- 앱 → 매니페스트 →
AndroidManifest.xml
. - CordovaLib → 매니페스트 →
AndroidManifest.xml
.
이제 gradle을 다시 빌드하려고 시도하면 이제 성공적으로 빌드됩니다.
Androidmanifest.xml
Application 태그에 다음이 있는지 확인하십시오.
<application android:networkSecurityConfig="@xml/network_security_config" android:usesCleartextTraffic="true" >
network_security_config
(앱 → res → xml → network_security_config.xml
)를 엽니다.
다음 코드를 추가합니다.
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">xxx.yyyy.com</domain> </domain-config> </network-security-config>
여기 xxx.yyyy.com
은 HTTP API의 링크입니다. URL 앞에 Http를 포함하지 않았는지 확인하십시오.
참고: 이제 Android Studio(빌드 -- 빌드 번들/APK -- 빌드 APK)를 사용하여 앱을 빌드하고 이제 해당 앱을 사용할 수 있으며 Android Pie에서 제대로 작동합니다. ionic Cordova build android를 사용하여 앱을 빌드하려고 하면 이 모든 설정을 재정의하므로 Android Studio를 사용하여 프로젝트를 빌드해야 합니다.
이전 버전의 앱이 설치되어 있는 경우 해당 앱을 제거하고 시도해 보십시오. 그렇지 않으면 다음과 같은 오류가 남게 됩니다.
앱이 설치되지 않음
Gvs Akhil내 응용 프로그램을 개발하는 동안 동일한 "Cleartext HTTP 트래픽이 허용되지 않음" 오류가 발생합니다. 내 애플리케이션의 네트워크 호출에 Retrofit2를 사용하고 있으며 두 가지 프로젝트 환경(개발 및 프로덕션)이 있습니다. 내 프로덕션 도메인에는 HTTPS 호출이 포함된 SSL 인증서가 있고 dev에는 https가 없습니다. 구성은 빌드 플레이버에 추가됩니다. 하지만 개발자로 변경하면 이 문제가 발생합니다. 그래서 나는 그것을 위해 아래 솔루션을 추가했습니다.
매니페스트에 일반 텍스트 트래픽을 추가했습니다.
android:usesCleartextTraffic="true"
그런 다음 개조 구성 클래스 OKHttp 생성 시간에 연결 사양을 추가했습니다.
.connectionSpecs(CollectionsKt.listOf(ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT))
전체 OkHttpClient 생성은 아래에 나와 있습니다.
OkHttpClient okHttpClient = new OkHttpClient.Builder() .readTimeout(10, TimeUnit.SECONDS) .connectTimeout(10, TimeUnit.SECONDS) .cache(null) .connectionSpecs(CollectionsKt.listOf(ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT)) .addInterceptor(new NetworkInterceptor(context)) .addInterceptor(createLoggingInterceptor()) .addInterceptor(createSessionExpiryInterceptor()) .addInterceptor(createContextHeaderInterceptor()) .build();
Nithinjith파일 생성 - res / xml / network_security.xml
network_security.xml에서 ->
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">192.168.0.101</domain> </domain-config> </network-security-config>
AndroidManifests.xml을 엽니다.
android:usesCleartextTraffic="true" //Add this line in your manifests <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:usesCleartextTraffic="true" android:theme="@style/AppTheme">
HandyPawan나를 위해 작동하는 대답은 @PabloCegarra의 것입니다.
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config>
cleartextTrafficPermitted="true"
에 대한 보안 경고를 받을 수 있습니다.
'화이트리스트'에 대한 도메인을 알고 있다면 허용되는 답변과 위의 답변을 모두 혼합해야 합니다.
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="false"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">books.google.com</domain> <trust-anchors> <certificates src="system" /> </trust-anchors> </domain-config> </network-security-config>
이 코드는 작동하지만 내 앱은 books.google.com에서만 데이터를 검색해야 합니다. 이렇게 하면 보안 경고가 사라집니다.
Steve Rogers cleartext support is disabled by default.Android in 9 and above Try This one I hope It will work fine 1 Step:-> add inside android build gradle (Module:App) useLibrary 'org.apache.http.legacy' android { compileSdkVersion 28 useLibrary 'org.apache.http.legacy' }
그런 다음 2 단계:-> 매니페스트 애플리케이션 태그 내부에 매니페스트 추가
<application android:networkSecurityConfig="@xml/network_security_config">//add drawable goto Step 4 // Step --->3 add to top this line <uses-library android:name="org.apache.http.legacy" android:required="false" /> </application>
//4단계-->> 드로어블 생성 >> XML 파일 >> 이름으로 >> network_security_config.xml
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config>
Ashif다음을 resources/android/xml/network_security_config.xml
넣으십시오.
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true" /> </network-security-config>
이렇게 하면 Cordova/Ionic용 Android에서 Failed to load resource: net::ERR_CLEARTEXT_NOT_PERMITTED
Jarda PavlíčekAndroidManifest.xml 파일 안에 android:usesCleartextTraffic="true" 를 추가하기만 하면 됩니다.
Manoj Alwis이것은 보안상의 이유로 수행되며 가능한 경우 항상 HTTPS(HTTP Secure )를 사용하는 것을 선호해야 합니다.
여기에서 자세히 읽을 수 있습니다.
귀하의 상태에 따라 이 문제에 대한 여러 솔루션이 있습니다.
퍼스트 파티 서비스와 통신하려는 경우 IE: 자체 웹 서버
서버 측: 해당 서버에 HTTPS 지원을 추가하고 HTTP 대신 HTTPS를 사용해야 합니다. 요즘에는 LetsEncrypt 및 기타 서비스를 사용하여 무료로 할 수도 있습니다.
클라이언트 측 : 당신이 사용하는 경우 HttpURLConnection
으로부터 java.net
패키지 당신이로 전환 할 수 있습니다 HttpsURLConnection
의 java.net.ssl
스위치가 노력해야한다, 그래서 패키지가 비슷한 경우 동일하지 API가 있습니다.
Google, Facebook, 날씨 서비스 등과 같은 타사 서비스를 사용하는 경우
통신 중인 서비스가 HTTPS를 지원하는 경우(대부분 그럴 가능성이 높음) 요청 URL을 http://abc.xyz
에서 https://abc.xyz
변경할 수 있습니다.
최후의 수단으로 통신하려는 타사 서비스가 HTTPS 또는 다른 형태의 보안 통신을 지원하지 않는 경우 이 답변을 사용할 수 있습니다. 보안 기능.
Rosenpin제 경우에는 해당 URL이 브라우저에서도 작동하지 않습니다.
https://www.google.com/에서 확인합니다.
webView.loadUrl("https://www.google.com/")
그리고 그것은 나를 위해 일했습니다.
Mayuresh Deshmukh Xamarin.Android 개발자의 경우 HttpClient 구현 및 SSL/TLS가 기본값으로 설정되어 있는지 확인합니다.
Andorid 옵션 -> 고급 Android 옵션에서 찾을 수 있습니다.
chaosifierReact Native 0.58.5 이상 버전으로 업그레이드하십시오. RN 0.58.5의 구성 파일에 includeSubdomain
변경 로그
Rn 0.58.5에서는 서버 도메인으로 network_security_config
네트워크 보안 구성을 통해 앱은 특정 도메인의 일반 텍스트 트래픽을 허용할 수 있습니다. 따라서 매니페스트 파일의 애플리케이션 태그에서 android:usesCleartextTraffic="true"
를 선언하여 추가 노력을 기울일 필요가 없습니다. RN 버전을 업그레이드하면 자동으로 해결됩니다.
Dishant WaliaAPI 버전 9.0을 변경한 후 YOUR-API.DOMAIN.COM에 대한 일반 텍스트 HTTP 트래픽이 허용되지 않음(targetSdkVersion="28") 오류가 발생합니다. xamarin, xamarin.android 및 Android 스튜디오에서.
xamarin, xamarin.android 및 android studio에서 이 오류를 해결하는 두 단계.
1단계: resources/xml/network_security_config.xml 파일 생성
network_security_config.xml에서
<?xml version="1.0" encoding="utf-8" ?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">mobapi.3detrack.in</domain> </domain-config> </network-security-config>
2단계: AndroidManifest.xml 업데이트 -
애플리케이션 태그에 android:networkSecurityConfig="@xml/network_security_config"를 추가합니다. 예:
<application android:label="your App Name" android:icon="@drawable/icon" android:networkSecurityConfig="@xml/network_security_config">
Ripdaman Singh헤더에 이 매개변수를 추가하면 apiSauce React Native에서 내 문제가 해결되었습니다.
"Content-Type": "application/x-www-form-urlencoded", Accept: "application/json"
Waleed Arshadionic 을 사용 중이고 기본 http 플러그인 중에 이 오류가 발생하면 다음 수정 작업을 수행해야 합니다.
goto resources/android/xml/network_security_config.xml
변경하십시오.
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">localhost</domain> <domain includeSubdomains="true">api.example.com(to be adjusted)</domain> </domain-config> </network-security-config>
그것은 나를 위해 일했습니다!
Leena일반 텍스트 는 암호화되지 않았거나 암호화되어야 하는 전송 또는 저장된 정보입니다.
Community WikiCordova-plugin-whitelist 1.3.4와 함께 Cordova 8을 사용하고 있으며 기본 구성 내 앱은 인터넷에 액세스할 수 없으며 manifest.xml -> android:usesCleartextTraffic="true"에 매개변수만 추가합니다.
메인페스트의 경로가 Cordova 8에서 변경되었습니다: platform/android/app/src/main/AndroidManifest.xml.
<?xml version='1.0' encoding='utf-8'?> <manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android"> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> <application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:usesCleartextTraffic="true"> <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize"> <intent-filter android:label="@string/launcher_name"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> </manifest>
앱이 인터넷에 액세스해야 하는 것이 분명하기 때문에 이것은 정말 어리석은 일입니다....
Chevelle출처 : http:www.stackoverflow.com/questions/45940861/android-8-cleartext-http-traffic-not-permitted