【问题标题】:Not connecting to internet on iOS 9 simulator在 iOS 9 模拟器上无法连接到互联网
【发布时间】:2015-10-08 08:23:28
【问题描述】:

我正在使用 Xcode 7。当 iOS 9 模拟器没有连接到互联网时,我将 App 传输安全性添加到 info.plist 以允许不安全的通信。它确实工作了一段时间。但是,它再次停止工作。已尝试“重置内容和设置”,重新启动。似乎没有任何效果。 有没有人遇到过这个?知道怎么解决吗?

谢谢。

【问题讨论】:

    标签: ios objective-c xcode ios9 xcode7


    【解决方案1】:

    您可以在此处找到与问题相关的详细信息 App Transport Security Exceptions in iOS 9 and OSX 10.11

    Apple 提供了一种完全禁用 ATS 的方法

    <key>NSAppTransportSecurity</key>
    <dict>
      <!--Include to allow all connections (DANGER)-->
      <key>NSAllowsArbitraryLoads</key>
          <true/>
    </dict>
    

    您还可以使用其他密钥来配置应用传输安全性

    NSRequiresCertificateTransparency
    NSTemporaryExceptionRequiresForwardSecrecy
    NSTemporaryThirdPartyExceptionAllowsInsecureHTTPLoads
    NSTemporaryThirdPartyExceptionMinimumTLSVersion
    NSTemporaryThirdPartyExceptionRequiresForwardSecrecy
    

    【讨论】:

      【解决方案2】:

      要配置每个域的例外,以便您的应用可以连接到非安全(或未启用 TLSv1.2 的安全主机),请将这些密钥添加到您的 Info.plist(并注意 Xcode 目前不从第一个 Xcode 7 beta 种子开始自动完成这些键):

      <key>NSAppTransportSecurity</key>
      <dict>
        <key>NSExceptionDomains</key>
        <dict>
          <key>yourserver.com</key>
          <dict>
            <!--Include to allow subdomains-->
            <key>NSIncludesSubdomains</key>
            <true/>
            <!--Include to allow HTTP requests-->
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <!--Include to specify minimum TLS version-->
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
          </dict>
        </dict>
      </dict>
      

      您还可以使用其他密钥来配置应用程序传输安全性,例如:

      NSRequiresCertificateTransparency
      NSTemporaryExceptionRequiresForwardSecrecy
      NSTemporaryThirdPartyExceptionAllowsInsecureHTTPLoads
      NSTemporaryThirdPartyExceptionMinimumTLSVersion
      NSTemporaryThirdPartyExceptionRequiresForwardSecrecy
      

      对于演示,您可以在 info.plist 中执行类似操作,如下图所示:

      对于演示,您可以如下图所示:

      但是如果我不知道我需要使用的所有不安全域怎么办?

      如果您的应用(例如第三方网络浏览器)需要加载任意内容,Apple 提供了一种完全禁用 ATS 的方法,但我怀疑您最好谨慎使用此功能:

      <key>NSAppTransportSecurity</key>
      <dict>
        <!--Include to allow all connections (DANGER)-->
        <key>NSAllowsArbitraryLoads</key>
            <true/>
      </dict>
      

      您可以找到它的技术说明Here

      【讨论】:

        猜你喜欢
        • 2016-10-22
        • 2018-06-11
        • 2011-11-07
        • 2011-07-29
        • 2012-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多