TIL
[Swift] iOS에서 HTTP 통신하기
Kim Roks
2025. 1. 8. 19:35
레거시한 Open API를 활용하여 학습용 프로젝트 진행 중 마주하게 된 오류
App Transport Security has blocked a cleartext HTTP connection since it is insecure. Use HTTPS instead or add Exception Domains to your app's Info.plist.
앱 전송 보안이 안전하지 않으므로 일반 텍스트 HTTP 연결을 차단했습니다.
대신 HTTPS를 사용하거나 앱의 Info.plist에 예외 도메인을 추가하세요.
라는데, 아 이게 너무 오래된 api라서 개선이 안됐고 HTTP를 사용하고 있고 앱에서 자체 차단을 하고 있다는 걸 알았다.
검색해본 결과 애플에선 기본적으로 ATS라는 정책을 따르고 있다고 한다.
ATS
- App Transport Security
- iOS 및 macOS 앱의 네트워크 보안을 강화하기 위해 애플이 도입한 기능이다
- 기본적으로 모든 네트워크 통신을
HTTPS 통해 수행하도록 요구
하는 사항이 보함되어있다. - TLS 프로토콜을 사용하여 데이터를 암호화 하며, TLS(Transport Layer Security) 1.2 이상을 권장한다고 한다.
정책을 따라 HTTPS를 사용한다면 더욱 좋겠지만, 나처럼 레거시한 api를 활용해보고 싶거나 피치못할 상황이 있다면 위의 에러메세지에서 설명해준것 처럼 info.plist에서 예외를 설정해줄 수 있다.
NSAllowsArbitraryLoads
NSAllowsArbitraryLoads | Apple Developer Documentation
공식문서를 참고하여 매우 간단하게 모든 네트워크에 관해 ATS의 적용을 해제하는 작업은 해당과 같이 할 수 있었다
모든 경우가 아닌 좀 더 좁은 범위의 예외를 두고 싶은 경우도 같은 공식문서에서 확인할 수 있었다.