CLEARTEXT communication to XXXX not permitted by network security policy

sagong·2019년 12월 5일
0

Android OS 9 Pie 버전부터는 WebView에 일반적인 텍스트로 "http://" URL 접근이 막혔습니다.

(tagetSdkVersion 28 이상일 경우)

  1. res/xml/network_security_config.xml 추가
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">ebookfrenzy.com</domain>
    </domain-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">amazon.com</domain>
    </domain-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">nytimes.com</domain>
    </domain-config>
</network-security-config>

위 파일 추가 후 AndroidManifest.xml 에서 application에 networkSecurityConfig속성 추가

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    ...
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config" 

이 방법은 network_security_config.xml 파일에 앱 내 텍스트로 사용할 URL들이 정의되어 있어야 함.

cleartextTrafficPermitted 속성이 true일 경우 동작을 함.

  1. AndroidManifest.xml 에서 application 의 usesClearTextTraffic 속성 수정
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    ...
    <application
        ...
        android:usesCleartextTraffic="true"

이 방법은 텍스트 URL 을 무조건 허용하게 됨.

  1. Android Manifest.xml에서 manifet의 targetSandboxVersion 속성을 사용 중일 경우 관련 내용 : https://developer.android.com/guide/topics/manifest/manifest-element#targetSandboxVersion

위 관련 내용에 따르면 속성 값이 높을수록 보안 수준이 높아지며, 2일 경우 usesCleartextTraffic의 기본 값이 false가 됨. 그래서 이 속성의 값을 1로 변경해야함. 다만 Android 8.0 (API 26) 이상을 타겟팅하는 Android Instant Apps의 경우 이 속성을 2로 설정해야 함.

<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
    ...

참고
https://gun0912.tistory.com/80
https://cordova.apache.org/docs/en/latest/plugin_ref/spec.html#edit-config

profile
안녕하세요

0개의 댓글