Xcode plist 编辑器中未列出 NSAppTransportSecurity 选项

NSAppTransportSecurity option not listed in Xcode plist editor

我正尝试按照以下 Apple 技术说明 https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/#//apple_ref/doc/uid/TP40016240-CH1-SW3(排除部分)

中的说明将 App Transport Security 密钥添加到我的 Info.plist

当我编辑 Info.plist 文件时,我做了以下操作:

  1. 单击 'Information Property List' 旁边的“+”以创建新的顶级密钥
  2. 单击下拉菜单 select“NSAppTransportSecurity”

但是 Xcode 没有在下拉列表中列出该选项(下面的屏幕截图)。

我需要在文本编辑器中打开 Info.plist 文件并手动编辑吗?!还是我错过了一些(可能很明显!)步骤?

我正在使用 Xcode 7.0.1

谢谢

Xcode 7.1 列出了下拉列表中的选项 (App Transport Security Settings)。在早期版本中,您需要键入原始密钥 NSAppTransportSecurity 并将类型设置为字典。

只是它还没有出现在 Xcode 7.0

您仍然可以使用 Xcode 但我建议您使用文本编辑器打开 plist 文件并添加它以允许所有连接到 all 域:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <!-- .......................... -->
        <!-- Other keys already present -->
        <!-- .......................... -->

        <key>NSAppTransportSecurity</key>
        <dict>

           <key>NSAllowsArbitraryLoads</key>
           <true/>

        </dict>

    </dict>
    </plist>

要将特定例外添加到域列表,请改为添加:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!-- .......................... -->
    <!-- Other keys already present -->
    <!-- .......................... -->

    <key>NSAppTransportSecurity</key>
    <dict>

        <key>NSExceptionDomains</key>
        <dict>

            <key>domain.com</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>

        </dict>
    </dict>

</dict>
</plist>

NSIncludesSubdomains 不是必需的,但允许访问 wiki.domain.com、blog.domain.com 等子域

有关详细教程,请查看 this blog post