gpt4 book ai didi

ios - 在 Xcode 9.2 中禁用应用程序传输安全?

转载 作者:技术小花猫 更新时间:2023-10-29 11:22:16 25 4
gpt4 key购买 nike

我无法在 Xcode 9.2 中禁用 App Transport Security (ATS)。我一直(多年来)在针对我的本地服务器环境运行构建时禁用 ATS,如下所示:

Transport security has blocked a cleartext HTTP

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

在 Xcode 9.2 中,一个简单的请求(以 http 模式针对本地 Rails 应用程序运行):

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()

失败并显示错误消息

Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={_kCFStreamErrorCodeKey=-9802, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, NSUnderlyingError=0x60c00024afb0 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9802, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9802}}, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., NSErrorFailingURLKey=https://store.dev/api/products.json, NSErrorFailingURLStringKey=https://store.dev/api/products.json, _kCFStreamErrorDomainKey=3}

这个完全相同的请求(也是同一个项目)在 Xcode 9.1 上成功。

在这两种情况下,我都针对 iOS 11.1 部署目标进行构建。您可以看到 Xcode 正在将 url 从 http 更改为 https,这是我不想要的。

这是在 Xcode 9.1 中工作但在 9.2 中失败的 super 基础项目的链接 (https://github.com/chrismanderson/ats-sample)。

我也试过为本地 store.dev 域禁用 ATS,同样,它适用于 Xcode 9.1 但不适用于 9.2。

最佳答案

我最初并没有把它放在一起,但我认为正在发生的事情是 iOS 11,Apple 支持 HSTS .我相信支持 HSTS 预加载列表,最近结合 Google adding the .dev TLD to the HSTS preload list ,可能会导致 iOS 试图强制您使用 https,但这是失败的(我错过了您正在尝试使用 .dev 本地域进行测试,这确实是这里的关键因素)。

我认为您唯一的解决方案是将本地测试域更改为 .dev 域以外的域。如果你这样做,你应该能够连接,它不会试图强制你在本地开发环境中访问 https。

简而言之,Google 已经获得了 .dev 顶级域的权利,并且最近将其添加到 HSTS 预加载列表中,以强制与 .dev 域的所有通信都是安全的。在支持 HSTS 预加载列表的设备上,这会导致所有流量通过 HTTPS 重定向,这将导致在不支持 HTTPS 的服务器上出错。

关于ios - 在 Xcode 9.2 中禁用应用程序传输安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47681652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com