Swift iOS 9 NSURLErrorDomain 错误 -1004

Posted

技术标签:

【中文标题】Swift iOS 9 NSURLErrorDomain 错误 -1004【英文标题】:Swift iOS 9 NSURLErrorDomain Error -1004 【发布时间】:2015-10-04 17:20:00 【问题描述】:

我在 ios 9 和 iOS 8 上都使用 Swift 2 和 Alamofire。在 iOS 8 中,我对 API 的所有请求都可以正常工作。在 iOS 9 中,它们立即以 -1004 NSURLErrorDomain 失败,并显示消息“无法连接到服务器。”。我阅读了 Apple 对 App Transport Security 所做的更改,并已将该条目添加到我的 Plist 以禁用它并允许不安全的连接。

我不知道这个错误的原因......任何帮助都会很棒!

【问题讨论】:

你允许它成真吗? @BankerMittal:是的,我已更改我的 plist 以允许所有不安全的连接。它应该工作。它适用于 iOS9 的第一个版本,但其中一个错误更新破坏了它。 ios 9 的新版本 - ios 9.1 最近来了。请更新并检查它。 iOS 9.1 在模拟器上不工作 【参考方案1】:

在弄了很多不同的键和值让它工作之后,我终于想出了这个让它在 iOS9.1 中运行:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>mydomain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSRequiresCertificateTransparency</key>
            <false/>
        </dict>
    </dict>
</dict>

在我添加了最后一个 NSRequiresCertificateTransparency 并将其设置为 false 之后,它起作用了,所以这可能是最重要的一个。

【讨论】:

以上是关于Swift iOS 9 NSURLErrorDomain 错误 -1004的主要内容,如果未能解决你的问题,请参考以下文章

问题 XCode 8,Swift 2.3 存档版本在 IOS 9.2.1 -> IOS 9.0 上启动时崩溃

iOS:面向 iOS 9 时使用 Swift 4

swift 针对iOS 9 / XCode 7 / Swift 2.x更新了FlickrSearcher.swift

如何使用 UINavigationController (Swift 2.0 iOS 9) 强制设置横向方向

XCUIApplication 仅适用于 iOS 9.0 或更新版本,swift3

多种协议的 Swift 类一致性(XCode 7、iOS 9、Swift 2.1)