본문 바로가기

JAVA/Android

[JAVA][Android] AndroidManifest의 usesCleartextTraffic 속성 (http URL로의 접근 제한 해결)(Cleartext HTTP traffic to www.XXX.com not permitted)

안드로이드에서 https 접근과 달리 http URL의 접근은 기본적으로 허용하지 않는 형태이므로,

만약 https를 사용할 수 없는 조건에서 http URL에 접근하려고 한다면 usesCleartextTraffic 속성 정의가 필요하다.

 

(http와 https의 차이)

 

이러한 예외처리 없이 http URL에 접근하려고 한다면

Cleartext HTTP traffic to www.XXX.com not permitted 등의 에러가 발생할 수 있다.

 

usesCleartextTraffic : 해당 속성을 true로 설정하면 모든 http 주소에 접근할 수 있다

<application
    android:name="MyApplication"
    android:usesCleartextTraffic="true">
</application>


일부 http URL에만 접근을 허용하고 싶다면,
/res/xml/network_security_config.xml 파일을 생성하여 예외처리를 해주어야 한다

 

*모든 http URL에 대하여 접근 허용

(태그 안에 URL을 작성하여 특정 http에만 접근을 허용할 수 있음)

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

*domain-config 태그에 포함된 http URL에 대하여 접근 제한

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

-> 파일을 작성했다면 AndroidManifest 파일의 application 태그 내부에

    android:networkSecurityConfig 속성을 주어 config파일을 지정해주면 된다.

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