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" />
'Android' 카테고리의 다른 글
WebView 기반 안드로이드 네이티브 앱 개발4(스플래쉬 화면) (0) | 2020.06.08 |
---|---|
WebView 기반의 안드로이드 네이티브 앱 개발 3 (뒤로가기) (0) | 2020.05.27 |
WebView 기반의 안드로이드 네이티브 앱 개발 2 (JavaScript 설정) (0) | 2020.05.22 |
WebView 기반의 안드로이드 네이티브 앱 개발1(WebView load) (0) | 2020.05.20 |
WebView 기반 안드로이드 네이티브 앱 개발5 (file upload) (9) | 2020.05.19 |