Android

ERR_CLEARTEXT_NOT_PERMITTED

태인킴 2020. 5. 18. 23:38
반응형


Cordova로 개발 하고 있는 상황에서 'http://' 프로토콜을 사용해서 다른 웹페이지에 요청을 날릴때, 다음과 같은 에러가 뜨는 경우가 있습니다.

"net::ERR_CLEARTEXT_NOT_PERMITTED"

Cordova 말고 Android 네이티브에서는 다음과 같이 에러가 출력 될 것입니다.

"CLEARTEXT communication to XXXX not permitted by network security policy"

이 에러는 안드로이드 pie(9.0) 버전 부터는 "http" 가 아닌 "https" 프로토콜을 쓰도록 하게 하기 위함 입니다.

 

* 해결 방법

1. http -> https

따라서 이 에러를 해결 하기 위해서는 "http"에 요청을 하는 것이 아니라, "https"에 요청을 하면 됩니다. 하지만 이것은 수정 할 수 없는 경우가 대부분 입니다.

 

2. android:usesCleartextTraffic="true"

안드로이드 네이티브로 개발할 경우에는 android\app\src\main\AndroidManifest.xml 파일에 다음과 같이 usesCleartextTraffic="true" 속성을 추가해 주는 것입니다.

<application
	...
	android:usesCleartextTraffic="true">

 

코르도바일 경우에는 config.xml 파일에 다음에 코드를 추가 해주어야 합니다.

<platform name="android">
	<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
		<application android:usesCleartextTraffic="true" />
	</edit-config>
</platform>

 

3. network_security_config.xml

코르도바 경로 : platforms\android\xml\network_security_config.xml

안드로이드 네이티브 경로: res\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">(api.xxx.com 주소)</domain>
	</domain-config>
</network-security-config>

 

그리고 AndroidManifest.xml 파일에 network_security_config.xml 파일을 명시해 주는 소스를 적어 주어야 합니다. 안드로이드 네이티브에 경우에는 AndroidManifest.xml 다음과 같이 적어 주시고요.

<application
    ...
    android:networkSecurityConfig="@xml/network_security_config" />

 

코르도바에 경우에는 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:usesCleartextTraffic="true" />
     <application android:networkSecurityConfig="@xml/network_security_config" />
 </edit-config>
 <resource-file src="resources/android/xml/network_security_config.xml" 
 target="app/src/main/res/xml/network_security_config.xml" />

 

반응형