Language/iOS,AOS

nsurlerrordomain code=-1022, HTTP 프로토콜 허용

건담아빠 2023. 3. 17. 08:22

 

 

iOS 9 이후로 App Transport Security(ATS)를 이용하여 http프로토콜을 차단 한다고 합니다.

 

해당 설정을 하지 않은채 http로 접근을 시도하면 아래와 같은 에러가 발생합니다.

 

해결 방법

Info.plist의 설정에서 App Transport Security Settings을 아래와 같은 방식으로 추가해 줍니다.

 

1. App Transport Security Settings 추가

TARGETS -> Info -> `+` ->  App Transport Security Settings 추가 -> Type Tictionary 확인

 

2. Allow Arbitray Loads 추가 및 허용

Add Row -> Allow Arbitrary Loads 을 선택해 주고 옵션은 YES로 허용해 준다.

Add Row
Allow Arbitrary Loads 을 선택해 주고 옵션은 YES로 허용

 

 

plist 파일을 열어서 직접 추가해 주는것도 가능합니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	...
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    ...
</dict>
</plist>

 

필자는 로컬에서 http 오류 나서 NSExceptionAllowsInsecureHTTPLoads 도 추가해 주었습니다.

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

 

참조

https://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity

 

NSAppTransportSecurity | Apple Developer Documentation

A description of changes made to the default security for HTTP connections.

developer.apple.com