当前位置: 首页 > 知识库问答 >
问题:

使用Xcode 7测试iOS9应用程序无法从超文本传输协议请求中获取数据

殳俊晤
2023-03-14

我正在用iOS开发一个应用程序。对于我的开发,我使用Xcode beta7。以前,我用iOS 8.4在手机上测试我的应用程序,升级到iOS 9后,我无法在手机上安装相同的应用程序。请给我一些建议。非常感谢!

共有3个答案

何涵忍
2023-03-14

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

iOS9现在默认要求服务器支持具有TLS 1.2、前向安全和安全加密方法的https。

来自:应用传输安全技术说明

默认行为:
所有使用NSURLConnection、CFURL或NSURL会话API的连接都使用为iOS9.0或更高版本以及OS X 10.11或更高版本构建的应用中的应用传输安全默认行为。不符合要求的连接将失败。

解决方案是更新服务器到https TLS 1.2和转发安全性。也仅支持上述安全技术说明中的加密方法。

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

如果有必要,可以允许所有的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>

苹果公司在几个地方提供了这方面的信息:

WWDC 2015年706会议描述了发行说明:iOSiOS9.0的新内容。我相信在WWDC的主题演讲中也提到了这一点。

还可以看到这样的答案:关于iOS 9发行版中的ATS SSL。

慕容越泽
2023-03-14

请确保设置NSAppTransportSecurity的兼容性。

请参阅:如何将NSAppTransportSecurity添加到我的info.plist文件中?

顾嘉良
2023-03-14

资料来源:

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

变通方法,因为不应该使用而编辑。保护您的数据

 类似资料:
  • 我想知道你对这个概念的看法/意见。如果有替代方案?这是否可行/有益? 据我所知,对于每个http请求,服务器都会执行一些操作并返回http响应。 现在考虑任何场景,我们希望对服务器上运行的进程有更多的控制。 情景1:http请求发送- 在这里,资源被浪费了。 情况2:http请求发送- 在这里,客户端不知道服务器中运行的进程的状态。客户端必须等待,直到它获得超文本传输协议响应。 我的想法是:在初始

  • 我使用Laravel 8。用户点击一个包含id的链接#()我的应用程序从浏览器收到一个$请求,并通过我的问题是如何将id#输入php变量?

  • 我正在使用GWT和Spring controller来管理http流量。有些请求可能需要很长时间,但我希望在超过给定时间时终止请求。 我如何配置超时Spring。我也使用Apache Tomcat 7.0。我试图在tomcat上inrease最大线程,但有一段时间tomcat工作缓慢,因为请求线程不会死。

  • 进入我的组件 进入setupProxy.js,由第三部分官方指令创建https://facebook.github.io/create-react-app/docs/proxying-api-requests-in-development 当我使用axios从我的应用程序向浏览器控制台调用方法时,请编写POSThttp://localhost:3000/api/create404(未找到) 我试图

  • 我用Go编写了一个简单的服务器: 以及一个用Python编写的用于测试的简单客户端。以下是代码: 每次客户端访问服务器时,服务器都会产生这个错误: 我知道如何在Go中处理JSON Post请求 Python版本==3.4 Go版本==1.7 先谢谢你。

  • 我有以下curl命令,它在bash shell中运行良好 我现在想通过一个简单的网页运行这个按钮点击。这是我的Javascript 但是当我通过网页按钮点击运行这个javascript时,它给我以下错误“网络错误:500内部服务器错误-http://ec2-54-226-250-92.compute-1.amazonaws.com:8080/ocr”,我的成功()方法永远不会被调用。 正如我所说,