Служба, к которой я подключаюсь, использует самозаверяющий сертификат. В целях разработки я не хочу проверять эту цепочку.
Использование swift 3 с Alamofire 4. Исправил ATS соответственно:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>url.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
Код для подключения и отключения оценки.
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"example.domain.com": .pinCertificates(
certificates: ServerTrustPolicy.certificates(),
validateCertificateChain: false,
validateHost: true
),
"sub.url.com": .disableEvaluation
]
let sessionManager = Alamofire.SessionManager(
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
let headers = ["Authorization": "Basic /*...*/"]
sessionManager.request("https://sub.url.com/path", headers: headers).responseJSON { response in
print(response.request) // original URL request
print(response.response) // HTTP URL response
print(response.data) // server data
print(response.result) // result of response serialization
debugPrint(response)
if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}
Журнал ошибок с dumpPrint
[Результат]: FAILURE: Error Domain = NSURLErrorDomain Code = -999 "cancelled" UserInfo = {NSErrorFailingURLKey = https://sub.url.com/path, NSLocalizedDescription = cancelled, NSErrorFailingURLStringKey = https://sub.url.com/path}
URL был замаскирован.