본문 바로가기
개발/Android

[Android] http통신 에러 해결 - CLEARTEXT communication to not permitted by network security policy

by blacktree 2023. 8. 4.
반응형

안드로이드 9 (Pie) 이상에서 HTTP 통신을 사용해야 하는 경우에는 몇 가지 해결 방법이 있습니다. 여기에는 앱 개발자가 일시적으로 또는 특정 도메인에 대해서만 HTTP 통신을 허용할 수 있도록 설정하는 방법이 포함됩니다.

 

1.usesCleartextTraffic 플래그를 추가

AndroidManifest.xml 파일에 usesCleartextTraffic 플래그를 추가하여 앱의 전체 트래픽에 대해 HTTP 통신을 허용합니다.

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

위 방법은 모든 도메인에 대해 http 통신을 허용하므로 가능한 한 사용하지 않는 것이 좋습니다.

 

2.  network_security_config.xml 파일을 생성

특정 도메인에 대해서만 HTTP 통신을 허용하려면 res/xml 디렉토리에 network_security_config.xml 파일을 생성하고 다음과 같이 구성합니다.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">http.example.com</domain>
    </domain-config>
</network-security-config>

위 예에서는 http.example.com 도메인 (및 하위 도메인)에 대해서만 http 통신이 허용됩니다.
마지막으로, AndroidManifest.xml 파일에 위에서 작성한 network_security_config.xml 파일을 연결해야 합니다.

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

 

 

이러한 설정을 완료하고 앱을 다시 빌드하면, 특정 도메인에 대한 http 통신이 가능해집니다. 

단, 앱 개발이 완료되면 실제 배포 전에 HTTPS 통신으로 전환하시길 권장드립니다.

728x90
반응형

댓글