Swift 네트워크 액세스 라이브러리 Alamofire 액세스 https localhost 서버

2384 단어
Alamofire는 IOS 표준 라이브러리보다 편리한 네트워크 접근 인터페이스를 제공하고 Objective-C의 AF Network의 여러 가지 장점을 그대로 사용했기 때문에 저는 Swift 플랫폼으로 이전하는 선택이 되었습니다.Alamofire 문서 주소는 처음에 매우 초보적인 문제에 부딪혔습니다. https로 로컬 서버에 연결하는 것은 항상 오류를 보고합니다.
  • 왜 사람을 미치게 하는 https를 꼭 써야 하나요?*

  • 2016년 6월 14일 WWDC 2016 개발자 총회에서 애플은 2017년 1월 1일부터 애플 앱스토어의 모든 앱에서 App Transport Security(ATS) 보안 기능을 사용해야 한다고 마지막 기한을 발표했다.
    그래서 지금 상용 프로그램을 개발하려면 https를 사용해서 백엔드 API에 접근해야 합니다.
    여러 차례 벽에 부딪힌 후에 어쩔 수 없이 문제를 분리하여 각자 격파하였다.
  • Alamofire의 https 연결 문제.baidu를 방문하십시오.com 해볼까요?
  • Alamofire의localhost 사용자 정의 인증서 문제.
  • ATS IOS 시스템 네트워크 보안 구성.

  • 경험치는 다음과 같습니다.
  • Alamofire의 https 연결 문제, 오류 발생 Error Domain=NSURL Error Domain Code=-999 "cancelled".문제는 주로sessionManager의 생명주기로 인한 것이다.sessionManager를 클래스 구성원으로 설정하여response가 리셋될 때 미리 삭제하지 않도록 함으로써baidu에 정상적으로 접근하는 것을 해결했습니다.com의 문제.
  • import Foundation
    import Alamofire
    
    class NetworkManager {
    
        var manager: Manager?
    
        init() {
            let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
            manager = Alamofire.Manager(configuration: configuration)
        }
    }
    

    2. Alamofire의localhost 사용자 정의 인증서 문제.서버 Trust Policies에 도메인 이름, disable Evaluation 옵션을 추가해야 합니다.도메인 이름을 사용하십시오. 포트와 같은 다른 매개 변수는 필요하지 않습니다.
        class NetworkManager {
    
    var manager: SessionManager?
    
    init() {
        let serverTrustPolicies: [String: ServerTrustPolicy] = [
            "10.68.24.127" : .disableEvaluation
        ]
        let configuration = URLSessionConfiguration.default
        manager = Alamofire.SessionManager(
            configuration: configuration,
            serverTrustPolicyManager :ServerTrustPolicyManager(policies: serverTrustPolicies)
        )
    }
        }
    
  • 시스템 ATS 보안이 기능은 IOS의 새로운 기능으로 info를 구성해야 합니다.plist 파일.도메인 이름에 대응하는 설정 항목을 추가합니다.
  • NSAppTransportSecurity
    NSExceptionDomains
    
        url.com
        
            NSExceptionAllowsInsecureHTTPLoads
            
            NSExceptionRequiresForwardSecrecy
            
            NSIncludesSubdomains
            
        
    
    

    위의 세 가지 요소가 혼합되어 이 문제를 해결하기 어렵다.마지막으로 Alamofire의 저자는 좋은 조언을 제공했다.
  • Service Trust Manger의 수조에 단점을 설정하여 ATS 시스템이 요청을 막았는지, 아니면 Alamofire 자체의 문제인지 판단한다.
  • 좋은 웹페이지 즐겨찾기