39

我正在将 iOS 应用程序升级到 iOS 9,并且我有一些不安全的 URL,我需要一些应用程序传输安全性例外。我已经添加了我知道的两个,但是现在发生了一些警告:

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

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

4

2 回答 2

68

编者注:@jessedc 在下面的评论中指出苹果官方文档的链接如何做到这一点: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 添加到应用程序传输安全的例外中。

于 2015-07-02T20:36:47.923 回答
2

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

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

此外,如果您正在查找日志文件,请使用 Simulator manager 之类的工具来更轻松地找到正确的位置(https://github.com/tue-savvy/SimulatorManager)。

于 2017-03-01T12:43:20.697 回答