【问题标题】:iOS 10: Apple transport security "exception domains" no longer workingiOS 10:Apple 传输安全“异常域”不再起作用
【发布时间】:2017-01-13 01:52:01
【问题描述】:

我使用的是 iOS 10 beta 8、Xcode 8 beta 6。

关于 Apple 传输安全 (ATS),我发现使用“异常域”在 iOS10 中不起作用,但“允许任意加载”。还有人确认吗?

(我已经从图片中删除了域名;这是一个企业应用程序,不会受到应用商店忽略 ATS 异常的影响)

【问题讨论】:

  • 有没有运气解决这个问题?

标签: security ios10 beta


【解决方案1】:

异常域方法适用于我。 Xcode 8.21、mac os 10.12.3 和 react-native 0.42.3。

在 xcode 或 text-editor 模式下修改 plist 如下后,你应该关闭终端和模拟器并重新启动它。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>example1.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
        <key>example2.org</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
    <key>NSAllowsLocalNetworking</key>
    <true/>
</dict>

【讨论】:

    【解决方案2】:

    您必须在应用程序传输安全中使用 NSAllowsArbitraryLoads。 我遇到了同样的问题,但现在已经解决了。

    【讨论】:

    • 此解决方案只能暂时使用,因为它不安全,因此不被 Apple 推荐。
    【解决方案3】:

    这可能不是你的问题,但它解决了我的问题。

    您输入的域必须是通常会在浏览器中显示的域,即,如果在您的代码中使用 http://www.example.com,则应改用 www.example.com。 要么 http://example.com 在 plist 中应该是 example.com

    <key>NSAppTransportSecurity</key>
    <dict>
      <key>NSExceptionDomains</key>
      <dict>
        <!-- Replace example.com with www.example.com if that is what you registered on your hosting service-->
        <key>example.com</key>
        <!-- instead of http://example.com -->
        <dict>
          <key>NSExceptionAllowsInsecureHTTPLoads</key>
          <true/>
          <key>NSIncludesSubdomains</key>
          <true/>
        </dict>
      </dict>
    </dict>
    

    【讨论】:

      【解决方案4】:

      2021 示例工作正常:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
          <dict>
              <key>NSAppTransportSecurity</key>
              <dict>
                  <key>NSExceptionDomains</key>
                  <dict>
                      <key>abcdef.com</key>
                      <dict>
                          <key>NSExceptionAllowsInsecureHTTPLoads</key>
                          <true/>
                          <key>NSIncludesSubdomains</key>
                          <true/>
                      </dict>
                  </dict>
              </dict>
          </dict>
      </plist>
      

      召回 Swift 非故事板应用程序,默认情况下没有 Info.plist 文件。

      1. 转到目标(不是项目),信息

      2. 添加任意键(即使是无意义的)

      3. 这将生成一个常规的 Info.plist 文件

      现在您可以像往常一样以简单的方式修改Info.plist文件的源代码了。

      【讨论】:

        猜你喜欢
        • 2016-01-28
        • 2016-07-13
        • 2017-06-25
        • 2017-03-12
        • 1970-01-01
        • 1970-01-01
        • 2018-06-06
        • 2015-11-29
        • 2015-11-23
        相关资源
        最近更新 更多