[iOS] http 통신 허용 - NSAllowsArbitraryLoads

Seojin Kwak·2024년 1월 10일
0

NSAllowsArbitraryLoads

iOS는 http 통신이 기본적으로 불가능하다. https만 허용한다. 하지만 http가 꼭 필요한 경우가 있다.
Info.plist에서 NSAppTransportSecurity 라는 dictionary가 있는데, NSAllowsArbitraryLoads를 true로 설정해주게 되면 http 통신이 가능하다.

<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSAllowsArbitraryLoads</key>
		<true/>
		<key>NSExceptionDomains</key>
		<dict>
			<key>{허용 원하는 URL}</key>
			<dict>
				<key>NSExceptionAllowsInsecureHTTPLoads</key>
				<true/>
				<key>NSIncludesSubdomains</key>
				<true/>
			</dict>
			<key>localhost</key>
			<dict>
				<key>NSExceptionAllowsInsecureHTTPLoads</key>
				<true/>
			</dict>
		</dict>
	</dict>
  • NSAllowsArbitraryLoads: https 이외의 모든 통신을 허용한다.
  • NSExceptionDomains: 이 방법의 사용이 권장된다. 필요한 url을 적어주고 그 url만 통신을 허용해준다.

나는 pod install만 하면, 기껏 해놓은 true가 false로 다시 overwrite되는 오류가 있었다. 온갖 설정을 다 해봐도 소용이 없었는데, 결국 답은 공식문서였다.
https://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity/nsallowsarbitraryloads

Info.plist 안에 3가지 요소 중에 하나라도 있으면 NSAllowsArbitraryLoads의 키값은 무시된다. 즉 무조건 false로만 설정된다는 거다.
나는 NSAllowsLocalNetworking이 있었는데, 이걸 지워주니까 http가 드디어 허용됐다.

profile
Hello, World!

0개의 댓글