아삭아삭 iOS 개발

[문제해결] URLSessionTask failed with error: The resource could not be loaded because the App Transport Security~~ 본문

문제해결

[문제해결] URLSessionTask failed with error: The resource could not be loaded because the App Transport Security~~

바닐라머스크 2022. 6. 15. 19:48

 

<문제상황>

데이터 호출을 위해 Alamofire를 사용하여 Open API 연동시 아래 에러가 발생했습니다.

에러문구를 확인하기 위해 아래 코드를 추가하니 에러원인을 친절하게 알려줍니다.

 switch response.result {
                
 case .success(let response):
 	 print("DEBUG>> OpenParmacy Response \(response) ")
     viewController.didSuccess(response)
                    
case .failure(let error):
     print("DEBUG>> OpenParmacy Get Error : \(error.localizedDescription)")                   
}

 

확인한 에러문구는 아래와 같은데,

App Transport Security policy가 보안연결 사용을 요구하기 때문이라고 합니다. 흠

URLSessionTask failed with error: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

 

<문제원인>

 

애플 플랫폼상 App Transport Security policy(줄여서 ATS)라고 부르는 네트워킹 특징은 모든 앱의 데이터 무결성과 보안을 향상시킨다고 합니다.

그런데! 이 ATS는 URL를 끌어오는 시스템으로 만들어진 모~든 HTTP 연결들이 HTTPS를 사용하도록 요구합니다.

심지어 Transport Layer Security(줄여서 TLS) 프로토콜로 규정된 기본적인 서버 신뢰평가를 보완하도록  확장된 보안 체크를 부과합니다. 이때 ATS는 최소한의 보안 스펙을 충족하지 못하는 연결들을 차단한다고 하네요. [1]

 

에..?

뭔가 어려운 말이지만.. 간단하게 보안상의 이유로 HTTP 연결이 막혔다고 볼 수 있겠네요.

 

<문제해결>

info.plist 파일 내부항목을 수정하여 해결

 

step1) 프로젝트내 info.plist 파일 열기

 

step2) 마우스 오른쪽 클릭하여 Open as > Source Code 클릭

 

step3) 소스코드내 아래 코드를 기입
            - App Transport Security Settings를 딕셔너리로 추가하고
            - Allow Arbitrary Loads 를 추가하여 yes값을 준다는 의미가 있음

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

info.plist내 추가된 모습!

 

 

 

 참조자료

[1] https://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity

[2] https://stackoverflow.com/questions/32631184/the-resource-could-not-be-loaded-because-the-app-transport-security-policy-requi