如何确定App Transport Security正在阻止哪个URL?

时间:2015-07-02 19:57:38

标签: ios ios9 cfnetwork app-transport-security

我将iOS应用升级到iOS 9,并且我有一些不安全的网址,我需要一些App Transport Security的例外。我已经添加了我所知道的两个,但现在发生了一些警告:

  

App Transport Security已阻止明文HTTP(http://)资源加载,因为它不安全。可以通过应用程序的Info.plist文件配置临时例外。

我需要知道哪些网址被阻止,因此我可以将它们添加到Info.plist中,它们可能是图片或媒体文件。如何让系统记录它决定不加载的URL?

2 个答案:

答案 0 :(得分:67)

编辑注释:@jessedc在下面的评论中指出了官方Apple文档的链接,如何执行此操作:https://developer.apple.com/library/content/qa/qa1887/_index.html

好的,我有一个我不喜欢的答案!我仍然非常想要一个更好的。

在我的application:didFinishLaunchingWithOptions:方法中,我添加了一行

setenv("CFNETWORK_DIAGNOSTICS", "3", 1);

当我运行应用程序时,在日志中我可以找到一个如下所示的条目:

2015-07-02 15:27:56.152 MyApp[45041:9125662] CFNetwork diagnostics log file
created at: /Users/micah.hainline/Library/Developer/CoreSimulator/Devices/
11BCA581-5F5F-494D-932A-2ECFCA33EA93/data/Containers/Data/Application/
9ACC6941-8039-4B86-B5E8-A6C66E2AD520/Library/Logs/CrashReporter/CFNetwork_com
.myapp.MyApp_45041.nwlrb.log

当我打开该文件时,我有大量关于网络上发生的所有日志条目。我在该文件中搜索kCFErrorDomainCFNetwork并获取失败网络请求的日志。我可以使用它来查看系统尝试访问的URL,然后可以将该URL添加到App Transport Security的例外中。

答案 1 :(得分:2)

接受的答案是正确的但如果您在Xamarin iOS上执行此操作,则需要使用;

Environment.SetEnvironmentVariable("CFNETWORK_DIAGNOSTICS", "3", EnvironmentVariableTarget.Process);

此外,如果您正在寻找日志文件,请使用模拟器管理器之类的内容,以便更轻松地找到正确的位置(https://github.com/tue-savvy/SimulatorManager)。