0

TL; 博士:

我有一个 iOS 应用程序连接到符合新 ATS 功能最低要求的 Web 服务。我已经修改了我Info.plist的允许异常,所以我的应用程序仍然可以连接到网络服务。(iOS 9 上的 NSURLSession/NSURLConnection HTTP 加载失败)这在开发中可以正常工作,但是,我刚刚推送到商店的更新仍然无法访问 web 服务。我不知道断开连接发生在哪里或如何解决此问题。

===

首先,这一切都发生在模拟器中,当我在 xcode 中直接部署到我的 ipad 时,行为相同:

我正在尝试在我的 iOS 应用程序中通过 https 连接到 Web 服务。我现在每次尝试连接到网络服务时都会收到此错误:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

据我了解,这是因为新的 ATS 功能不允许连接。我通过对我的文件应用修复(NSURLSession/NSURLConnection HTTP load failed on iOS 9)确认了这一点Info.plist

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>mydomain.com</key>
    <dict>
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <key>NSIncludesSubdomains</key>
      <true/>
      </dict>
  </dict>
</dict>

一旦我把它放进去,它就会毫无问题地连接到网络服务。

显然,虽然我的服务器满足 TLS 1.2 要求和密码要求,但它不满足签名要求(https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html #//apple_ref/doc/uid/TP40009251-SW35 )

但是,我已经对我的应用进行了更新并推送到应用商店,但我的应用的商店版本无法连接到网络服务。相同的代码在我的本地机器上构建良好,并在从 xcode 部署到我的设备上运行,但商店中的版本似乎忽略了.plist修复。我怎样才能解决这个问题?这对我来说毫无意义。

4

2 回答 2

0

尝试将以下代码添加到您的 info.plist

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

更多信息见链接:苹果论坛

于 2015-10-07T20:09:48.527 回答
0

试试这个版本的配置info.plist

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.example.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

编辑:尝试指定NSExceptionRequiresForwardSecrecyNO好。

于 2015-10-07T19:50:11.030 回答