ERR_CLEARTEXT_NOT_PERMITTED 웹뷰에러 해결하기

ERR_CLEARTEXT_NOT_PERMITTED 웹뷰에러

지인의 부탁으로 간단한거 하나 틀 만들어주는데 별 생각없이 만들어서 줬더니 안나온다고 함.
내 폰에선 잘나오던데 라고 해줬는데 스샷 보니 저렇게 나옴. (해당 URL은 개발중이라 비공개고 대신 다음 웹툰 주소를 사용함)

ERR_CLEARTEXT_NOT_PERMITTED

검색해보니 안드로이드9 (Pie API28) 부터 http 처럼 암호화 하지 않은 URL 접근은 막혔다고 함.
내 폰은 8.1이었고 지인은 9 였으니 안됬던것이였음. 그래서 검색해보고 방법을 여기 정리해둠.

방법1.

android:usesCleartextTraffic="true"

AndroidManifest.xml 파일에 application 속성으로 위 내용을 넣어준다.
이 경우에는 모든 URL이 다 허용되는거라 딱히 추천을 하진 않는다. 보안적으로 문제가 생길 가능성이 있으니깐.

방법2.

android:networkSecurityConfig="@xml/network_security_config"

AndroidManifest.xml 파일에 application 속성으로 위 내용을 넣어주고 res폴더에 xml 폴더를 만든뒤 안에 network_security_config.xml 파일을 만들고 아래 내용을 넣어준다.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">도메인주소</domain>
        <domain includeSubdomains="true">linsoo.co.kr</domain>
    </domain-config>
</network-security-config>

이럴경우 특정 도메인에 한해서 https가 아니여도 접속할 수 있다.
테스트 서버처럼 임시로 만드는 서버일 경우 https를 안쓰는 경우가 있으니 이럴때 사용하면 될듯 싶다.

개인적으론 방법2 를 더 추천한다.

추가로 아래코드 처럼 true냐 false로 하느냐로 보안접속을 반드시 사용해야 할 URL을 지정할 수 있다.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!--    http로 접속 허용할 URL-->
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">media.daum.net</domain>
    </domain-config>
 
<!--아래는 반드시 https로 접속해야 할 주소-->
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">cartoon.media.daum.net</domain>
    </domain-config>
</network-security-config>

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다