我创建了一个使用NSURLSessionDataTask(HTTP)向服务器发送请求的框架,但每当我在示例应用程序中使用Framework时,它都会显示如下警告:
App Transport Security已阻止明文HTTP(http://)资源加载,因为它不安全。可以通过应用程序的Info.plist文件配置临时例外。
我尝试在Framework .plist中添加App Transport Security但仍无法正常工作。但是,当我在框架外的.plist中添加App Transport Security时,它可以工作。
这个问题有解决方法吗?谢谢
答案 0 :(得分:0)
正如@EmilioPelaez所述,该应用程序控制ATS是否处于活动状态。如果您的框架执行违反ATS规则的操作,则使用该框架的每个应用程序都需要添加相应的异常。
这种行为是有充分理由的。例如,采用通用网络助手框架,其中URL由调用应用程序提供给框架调用。该框架无法知道它是否需要ATS。相反,如果框架中包含需要ATS异常的硬编码URL,则调用应用程序开发人员应该意识到这一点,并且不应该被框架开发人员添加异常的表面所掩盖。作为开发人员,我想知道我使用的是一个本质上不安全的框架。如果您正在处理后一种情况,只需在框架文档中输入框架正常运行所需的异常。
此外,作为ATS的最佳做法,不要完全禁用它,有一些特定的例外可以通过仅禁用ATS要求的某些部分来最大限度地降低您的安全风险对于特定域名。一定要这样做。此外,了解Apple计划在2016年底要求许多ATS例外的理由,但目前已被推迟。如果您添加例外,您应该准备好在某个时候,当您将应用程序提交到App Store时,Apple会要求您提供原因。它可能不应该是“因为堆栈溢出告诉我禁用所有ATS”。
答案 1 :(得分:0)
该框架无法控制ATS,应用程序也是如此。所以你必须在你的文档中写下来,app开发者需要在他的应用程序中添加ATS例外。
那就是说,不要这样做。特别是如果你正在制作一个框架。花时间并向服务器添加HTTPS支持/联系服务器开发人员以添加它。因为Apple很快就会停止支持AllowArbitraryLoads / exception。因此,如果没有提供他们为什么需要这些例外的正当理由,那么包含您的框架的应用将无法完成审核流程。 Apple最初计划从2017年1月1日开始放弃支持,但他们推迟了一段时间。不过,他们有一天会这样做。计划未来会更好。
P.S。如果您完全无法控制服务器,并且服务器开发人员在Mars上,并且您的框架确实需要与该服务器通信,那么应用程序开发人员可能会通过解释情况来通过审核(“无法控制服务器“是Apple Review团队的正当理由”,但是他们每个人都必须一遍又一遍地执行此操作,并且您必须在文档中解释如何执行此操作以及说些什么。因此,切换到HTTPS更容易。
答案 2 :(得分:-1)