如何确定哪个URL被App Transport Security阻止?
我正在将iOS应用程序升级到iOS 9,而且我有一些不安全的URL,我需要App Transport Security的一些例外。 我已经添加了我所知道的两个,但现在有一些警告发生:
应用传输安全已阻止明文HTTP(http://)资源加载,因为它是不安全的。 临时例外可以通过您的应用程序的Info.plist文件进行configuration。
我需要知道什么URL被阻止,所以我可以将它们添加到Info.plist,他们可能是图像或媒体文件。 如何让系统logging它决定不加载的URL?
编者注 :@jessedc在关于如何执行此操作的官方Apple文档的链接下面的评论中指出: https : //developer.apple.com/library/content/qa/qa1887/_index.html
好的,我有一个我不喜欢的答案! 我仍然非常想要一个更好的。
在我的application:didFinishLaunchingWithOptions:
方法我添加了该行
setenv("CFNETWORK_DIAGNOSTICS", "3", 1);
当我运行应用程序,然后在日志中,我可以find一个如下所示的条目:
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
当我打开这个文件时,我有大量关于networking上发生的事情的日志条目。 我在该文件中searchkCFErrorDomainCFNetwork
并获取失败的networking请求的日志。 我可以使用它来查看系统试图访问哪些URL,然后可以将该URL添加到App Transport Security的例外。
接受的答案是正确的,但如果你在Xamarin iOS上这样做,你将需要使用;
Environment.SetEnvironmentVariable("CFNETWORK_DIAGNOSTICS", "3", EnvironmentVariableTarget.Process);
此外,如果你正在寻找日志文件使用像模拟器pipe理器来find正确的位置更容易( https://github.com/tue-savvy/SimulatorManager )。