首页 文章

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

提问于
浏览
39

我正在将iOS应用程序升级到iOS 9,并且我有一些不安全的URL,我需要App Transport Security的一些例外 . 我添加了我所知道的两个,但现在有一些警告说:

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

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

2 回答

  • 67

    Editor Note :@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

    接受的答案是正确的,但如果你在Xamarin iOS上这样做,你将需要使用;

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

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

相关问题