[iOS] HTTP 접근 허용하도록 Xcode 설정하기
13 Nov 2019 |
iOS에서 HTTP 접근 허용하기
iOS 9부터 HTTP 접근을 허용하지 않습니다.
따라서 리소스가 https 가 아니라면 불러오지 못합니다… 😥
트러블 슈팅을 하다보니 이미지를 불러올 url 이 https 스킴이 아닌데서 문제가 있어서 삽질하다가 해결한 문제입니다.
해결책은 Info.plist 에 다음 설정을 해줘야 합니다.
Solution
Info.plist 에 다음 설정을 해줍니다.
-
key 추가 : NSAppTransportSecurity
-
value 추가 - 허용 여부에 따라 다름
http 의 모든 접근을 허용할 수도 있고, 내가 원하는 특정 도메인만 허용할 수도 있습니다.
1. http 로 시작하는 모든 url 허용
- key : NSAllowArbitraryLoads
- value: true (YES)
이렇게 할 경우, https, http 상관 없이 모든 url 접근이 가능합니다.
😎 Property List에서 추가하는 방법
Property List
→ + 버튼으로 행 추가
→ NSAppTransportSecurity 을 입력
→ 해당 행에서 다시 + 버튼 눌러서 하위 property 행 추가
→ NSAllowArbitraryLoads 입력 & value 를 YES 로 바꿔줍니다.
2. 특정하는 몇개의 도메인만 예외적으로 허용
http 로 시작하는 몇개의 도메인만 선택적으로 허용하고 싶다면 다음처럼 설정합니다.
-
key : NSAllowArbitraryLoads / value: false (NO)
일단 모든 http load 는 막아놓게 됩니다.
-
key : NSExceptionDomains 추가
이 속성에 원하는 도메인만 http 접근을 허용하도록 추가할 수 있습니다.
-
2의 하위에 2개 값을 넣습니다. (Boolean type)
- key : NSExceptionAllowsInsecureHTTPLoads / value : YES
- Key : NSIncludesSubdomains / value: YES
🔽 완료하면 이렇게 보여야 됩니다
📎 Source Code 에서는 이렇게 설정하면 됩니다.
-
모두 허용
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
-
특정 도메인만 허용
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>daheenallwhite.github.io</key> <dict/> <key>NSIncludesSubDomains</key> <true/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> <key>NSAllowsArbitraryLoads</key> <false/> </dict>