Desativar segurança de transporte de aplicativos no Xcode 9.2?
Não consigo desativar o ATS (App Transport Security) no Xcode 9.2. Estive (por anos) desabilitando o ATS ao executar compilações no meu ambiente de servidor local da seguinte maneira:
A segurança de transporte bloqueou um HTTP em texto não criptografado
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
No Xcode 9.2, uma solicitação simples (executando em um aplicativo Rails local no modo http):
let session = URLSession(configuration: .default)
let url = URL(string: "http://store.dev/api/products.json")!
let task = session.dataTask(with: url) { data, response, error in
print(data)
print(response)
print(error)
}
task.resume()
falha com a mensagem de erro
Domínio do erro = Código NSURLErrorDomain = -1200 "Ocorreu um erro SSL e não foi possível estabelecer uma conexão segura com o servidor." UserInfo = {_ kCFStreamErrorCodeKey = -9802, NSLocalizedRecoverySuggestion = Deseja conectar-se ao servidor? NSUnderlyingError = 0x60c00024afb0 {Erro Domínio = kCFErrorDomainCFNetwork Código = -1200 "(0) _kCFStreamErrorDomainKey = 3, _kCFStreamErrorCodeKey = -9802}}, NSLocalizedDescription = Ocorreu um erro SSL e não foi possível estabelecer uma conexão segura com o servidor., NSErrorFailingURLKey =https://store.dev/api/products.json, NSErrorFailingURLStringKey =https://store.dev/api/products.json, _kCFStreamErrorDomainKey = 3}
Essa mesma solicitação exata (o mesmo projeto também) é bem-sucedida no Xcode 9.1.
Nos dois casos, estou construindo contra um destino de implantação do iOS 11.1. Você pode ver que o Xcode está alterando o URL de http para https, o que eu não quero.
Aqui está um link para o projeto super básico que funciona no Xcode 9.1, mas falha no 9.2 (https://github.com/chrismanderson/ats-sample)
Eu também tentei desativar o ATS apenas para o localstore.dev
domínio e, novamente, ele funciona no Xcode 9.1, mas não 9.2.