【发布时间】:2016-01-04 17:59:00
【问题描述】:
在 iOS 9 下,我在这里使用了公认的答案:Transport security has blocked a cleartext HTTP
我将这些条目添加到 NSAppTransportSecurity 下的 Info.plist 文件中。我的应用程序似乎运行正常,并且执行了我所考虑的所有请求。我仍然收到错误:
App Transport Security 已阻止明文 HTTP (http://) 资源 加载,因为它不安全。可以通过以下方式配置临时异常 您应用的 Info.plist 文件。
我的问题是我无法在我的应用程序代码库中找到它的来源,并且我不想允许所有域(我在接受的答案中引用了惰性选项)。有没有办法为其引发异常以便我可以找到警告的来源?
【问题讨论】:
-
不要关闭 ATS - 这是不好的做法。此外,您怎么可能从 Internet 加载资源而不知道加载它的内容?如果您正在使用其他人的代码(来自 Github 或提供的库)但不了解它的作用,那么您不应该使用该代码。话虽如此,您可以调试问题所在以及正在使用的 HTTP 请求(这应该将您指向问题库)。执行此操作的说明大约在页面的中间:timekl.com/blog/2015/08/21/…
-
感谢您的回复。我不想关闭 ATS。这就是为什么我想提出一个异常,以便我可以找到有问题的代码行。而且我认为期望熟悉每个第三方库中的每一行代码是不合理的。同样,找到有问题的请求会让我更熟悉代码,我可以选择是否要继续使用它。
-
@ManuKanthan 您正在使用的网络诊断可能是了解哪些请求被阻止的最佳方式。它非常冗长,但很好。
-
自从提出以来,Manu 似乎已经回答了实际问题:关闭 ATS 并不是自动的坏习惯。例如,您可能处于广告框架之类的位置,供应商通过该框架明确记录可能针对任何域发出的请求。如果您的用例是不可能提前知道您将访问的所有域,那么将其关闭是唯一合乎逻辑的方法。
-
您可以尝试使用 charles 代理查看发出的请求,如果链接不多,则添加例外。
标签: ios objective-c xcode ios9 app-transport-security