使用Xcode 7测试,iOS 9应用程序无法从http请求获取数据

问题描述 投票:1回答:3

我正在iOS中开发一个应用程序。对于我的开发,我使用的是Xcode beta7。之前,我曾经在iOS 8.4中使用iOS 8.4测试我的应用程序,更新到iOS 9后,我无法在手机中安装相同的应用程序。请给我一些建议。太谢谢了!

ios iphone xcode ios8 ios9
3个回答
1
投票

将此行添加到.plist文件:enter image description here

资源:

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

解决方法,编辑因为不应该使用。保护您的数据


0
投票

请务必设置NSAppTransportSecurity以获得兼容性。

见:How can I add NSAppTransportSecurity to my info.plist file?


0
投票

从最初的最小问题信息来看,问题可能是对不符合当前安全最佳实践的服务器的失败http请求。

iOS9现在默认需要服务器支持带有TLS 1.2的https,转发安全性和安全加密方法。

来自:App Transport Security Technote

默认行为: 使用NSURLConnection,CFURL或NSURLSession API的所有连接都在为iOS 9.0或更高版本以及OS X 10.11或更高版本构建的应用程序中使用App Transport Security默认行为。不符合要求的连接将失败。

解决方案是将服务器更新为https TLS 1.2并转发安全性。也只支持上述Security Technote中的加密方法。

另一种解决方案是将app plist上的url列入白名单,或者甚至在必要时允许所有http连接。这降低了连接安全性,最好的方法是更新服务器。

如果需要,可以允许所有URL,这通常仅在不知道要访问的URL(可能是用户提供的URL)或存在大量已知URL时才需要。

要禁用所有URL的安全性,请将其添加到应用程序的plist文件中: (不推荐),除非您确实需要访问未知的URL

<key>NSAppTransportSecurity</key>  
     <dict>  
          <key>NSAllowsArbitraryLoads</key><YES/>  
     </dict>  

要禁用单个URL(和子URL)的安全性,请将其添加到应用程序的plist文件中(将“yourdomain.com”更改为正确的URL“:

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

Apple提供了有关这几个地方的信息:

有描述的WWDC 2015 session 706以及发行说明:What's New in iOS iOS 9.0。我相信它也在WWDC主题演讲中提到过。

另见这个SO答案:About ATS SSL in iOS 9 release version

© www.soinside.com 2019 - 2024. All rights reserved.