-
[포케덱스] - Error: sessionTaskFailed프로젝트/포케덱스 2024. 5. 1. 15:37728x90반응형
오랜만이다. 바쁜 나날을 보내고 있어서 서론은 생략하겠다.
먼저 내가 겪은 문제에 대해 간략히 설명하겠다.
사용 라이브러리 : Alamofire
설정한 부분 : 프로젝트를 생성하고 swift파일만 생성했을 뿐 프로젝트파일을 그 어떤 것도 생성하지 않았음
문제의 코드 :
AF.request("http://\(Bundle.main.infoDictionary?["LOCAL_URL"] ?? "")/pokemon", method: .post, parameters: params, encoding: JSONEncoding.default) .validate() .response{ response in switch response.result { case .success(let value): print("Response: \(String(describing: value))") case .failure(let error): print("Error: \(error)") } }문제 상황 : Xcode 에러 로그
Error: sessionTaskFailed(error: Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." UserInfo={NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection., NSErrorFailingURLStringKey=http://220.123.52.178:3000/pokemon, NSErrorFailingURLKey=http://220.123.52.178:3000/pokemon, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask <0BA3C9A2-296C-46C4-B275-1D5FB42F8411>.<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <0BA3C9A2-296C-46C4-B275-1D5FB42F8411>.<1>, NSUnderlyingError=0x302f2f2d0 {Error Domain=kCFErrorDomainCFNetwork Code=-1022 "(null)"}})이런 오류가 떴다.
일단 결론 부터 말하면 애플은 기본적으로 HTTP 통신을 막고 있다.
자세히 말하면 애플은 보안 연결(HTTPS)을 요구하고 HTTP통신을 하는건 iOS앱 전송보안 정책에 위배 되서 그렇다고 한다.
뭐 이해는 간다만.. HTTPS를 쓰고 싶겠지만, 지금 당장은 나처럼 테스트 용으로 HTTP통신을 하는 사람이 분명 있을 것이다.
그런 분들을 위해 해결책을 제시해보겠다.
모두 이렇게 생긴 plist가 존재할 것이다.

없다면 찾거나 새로 생성해야하는데, 이 작업이 상당히 귀찮다..
일단 있다는 가정하에 진행해보자면
이 plist에 App Tranport Security를 설정해야한다.
이것은 말 그대로 보안 연결을 사용하지 않도록 설정하는건데, 보안에 취약해 질 수 있음으로 중요한 프로젝트일 수록 비추천한다.
이 파일을 소스로 열어서
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>이 내용을 추가하면 된다. 추가가 되있을 경우 false만 true로 바꿔주자.
'프로젝트 > 포케덱스' 카테고리의 다른 글