我创建了一个使用NSURLSessionDataTask (HTTP)向服务器发送请求的框架,但是每当我在示例应用程序中使用该框架时,它都会显示如下警告:
应用程序传输安全性阻止了明文HTTP (http://)资源负载,因为它是不安全的)。临时异常可以通过应用程序的Info.plist文件进行配置。
我试图在框架.plist中添加,但仍然无法工作。但是,当我在.plist外部框架中添加应用程序传输安全性时,它可以工作。
这个问题有什么解决办法吗?谢谢
发布于 2017-01-27 19:39:22
正如@EmilioPelaez所述,应用程序控制ATS是否处于活动状态。如果您的框架做了一些违反ATS规则的事情,那么每个使用该框架的应用程序都需要添加适当的异常。
这种行为是有充分理由的。例如,一个通用的网络助手框架,其中URL由调用的应用程序提供给框架调用。该框架将无法知道是否需要安非他明类兴奋剂。相反,如果框架中包含需要ATS异常的硬编码URL,则调用的应用程序开发人员应该意识到这一点,并且不应该被框架开发人员添加异常的表面遮挡。作为一个开发人员,我想知道我使用的是一个固有的不安全的框架。如果您正在处理后一个场景,只需将框架正常工作所需的异常放在框架文档中即可。
此外,作为自动测试系统的最佳实践,不只是完全禁用它(),还有一些特定的异常可以通过禁用特定域的ATS需求的某些部分来最小化您的安全风险暴露。你一定要这么做。另外,你要明白,苹果计划在2016年年底对许多安非他明类兴奋剂( ATS )的例外情况进行辩护,但目前已被推迟。如果你添加了例外情况,你应该做好准备,在某个时候,当你将应用程序提交到应用商店时,苹果会问你一个原因。可能不应该是“因为堆栈溢出让我禁用所有ATS”。
发布于 2017-01-27 19:48:19
该框架没有对ATS的控制,应用程序也是如此。所以你必须把它写在你的文档中,应用程序开发者需要在他的应用程序中添加ATS异常。
那就是说,别那么做。尤其是如果你在做一个框架。花点时间向服务器添加HTTPS支持/与服务器开发人员联系以添加它。因为苹果将很快停止支持AllowArbitraryLoads /特例。因此,包含框架的应用程序将无法通过评审过程,而不给出它们需要这些异常的正当理由。苹果最初计划从2017年1月1日起放弃这项支持,但他们推迟了一段未知的时间。不过,总有一天他们会这么做的。更好的是为未来做计划。
如果你对服务器完全没有控制,而服务器开发者在火星上,而你的框架真的需要与服务器通信,那么应用程序开发人员很可能能够通过解释情况通过评审(“无法控制服务器”是苹果审查小组的一个有效理由),但每个人都必须一遍又一遍地做,你必须在你的文档中解释如何做到这一点,说些什么。因此,切换到HTTPS更容易。
发布于 2017-01-27 04:21:49

在您的NSAllowsArbitraryLoads中添加info.plist作为真键,以避免此问题。
https://stackoverflow.com/questions/41886764
复制相似问题