【问题标题】:App transport policy on a command line tool in mac applicationmac应用程序中命令行工具上的应用程序传输策略
【发布时间】:2017-02-16 15:20:27
【问题描述】:

我正在构建一个 cocoa touch 框架,其中包含一个 ma​​c 应用程序(命令行工具/shell 应用程序),因此我可以在从构建阶段构建我的 iOS 应用程序时调用它并执行一些东西。

问题是我添加到 iOS 项目的命令行目标没有任何Info.plist 文件,所以我创建了一个,但传输策略设置对其没有任何影响。

下面是我的 iOS 应用程序构建日志的屏幕截图,试图执行我的控制台应用程序:

【问题讨论】:

  • 试试我的代码它可以帮助你解决你的问题
  • 您需要显示您的 Mac App 的 Info.plist。听起来您添加了一个并尝试输入NSAllowsArbitraryLoads,但它不起作用。我们需要查看您的地图应用程序的设置以提供帮助。
  • 命令行工具没有Info.plist,建议编辑Info.plist 文件的答案将不起作用。
  • 您创建的是 Mac 应用而不是 iPhone 设备应用。这是我的错觉。
  • 你有没有让它工作?我还需要在命令行应用程序上设置应用程序传输安全.....

标签: ios xcode macos shell cocoa-touch


【解决方案1】:

Try Just Once 将此字典配置到 Appdelegate 文件中。
这是NSAppTransportSecurity的基本结构。

NSAppTransportSecurity : Dictionary {

    NSAllowsArbitraryLoads : Boolean

    NSAllowsArbitraryLoadsInMedia : Boolean

    NSAllowsArbitraryLoadsInWebContent : Boolean

    NSAllowsLocalNetworking : Boolean

    NSExceptionDomains : Dictionary {

        <domain-name-string> : Dictionary {

            NSIncludesSubdomains : Boolean

            NSExceptionAllowsInsecureHTTPLoads : Boolean

            NSExceptionMinimumTLSVersion : String

            NSExceptionRequiresForwardSecrecy : Boolean   // Default value is YES

            NSRequiresCertificateTransparency : Boolean

        }

    }

}

我不知道它是否有效,但让我们尝试一下。
你可以参考这个Link。
希望这个东西有用

【讨论】:

    【解决方案2】:

    要改进应用程序和 Web 服务之间的连接 security,连接必须遵循最佳做法(您的 Web 服务请求应该:1)使用 HTTPS 和 2)使用 TLS v1.2 进行加密,并具有前向保密性。) .请查看App Transport Security Technote.

    正如您在屏幕截图(LIVEUI 自定义 shell 脚本)上发布的那样,您正在使用不安全的 Web 服务,因此您必须绕过 App Transport Security 行为。请按照以下步骤操作:-

    • 在 Xcode 中打开您的应用程序。
    • 在 Project Navigator 中找到 Info.plist 文件并“鼠标右键”单击它并选择 Open As &gt; Source Code 菜单选项。
    • 将以下属性块放入主属性字典中(在第一个 &lt;dict&gt; 下)。

    <key>NSAppTransportSecurity</key>
    <dict>        
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
    </dict>
    

    NSAllowsArbitraryLoads 用于禁用应用程序传输的布尔值 NSExceptionDomains 中未列出的任何域的安全性 字典。列出的域使用为该域指定的设置。

    默认值 NO 需要默认的 App Transport Security 所有连接的行为。

    【讨论】:

    • 好吧,正如@mttrb 提到的,“命令行工具没有 Info.plist,建议编辑 Info.plist 文件的答案将不起作用。” :(
    猜你喜欢
    • 1970-01-01
    • 2012-08-03
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 2013-02-25
    • 2011-03-09
    相关资源
    最近更新 更多