지인의 부탁으로 간단한거 하나 틀 만들어주는데 별 생각없이 만들어서 줬더니 안나온다고 함.
내 폰에선 잘나오던데 라고 해줬는데 스샷 보니 저렇게 나옴. (해당 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>
답글 남기기