all white cheat sheet Dana’s Swifty Life

[iOS] HTTP 접근 허용하도록 Xcode 설정하기

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 로 시작하는 몇개의 도메인만 선택적으로 허용하고 싶다면 다음처럼 설정합니다.

  1. key : NSAllowArbitraryLoads / value: false (NO)

    일단 모든 http load 는 막아놓게 됩니다.

  2. key : NSExceptionDomains 추가

    이 속성에 원하는 도메인만 http 접근을 허용하도록 추가할 수 있습니다.

  3. 2의 하위에 2개 값을 넣습니다. (Boolean type)

    • key : NSExceptionAllowsInsecureHTTPLoads / value : YES
    • Key : NSIncludesSubdomains / value: YES

    🔽 완료하면 이렇게 보여야 됩니다

 

 

📎 Source Code 에서는 이렇게 설정하면 됩니다.

  1. 모두 허용

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

     

  2. 특정 도메인만 허용

    <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>