繁体   English   中英

如何将 NSAppTransportSecurity 添加到我的 info.plist 文件中?

[英]How can I add NSAppTransportSecurity to my info.plist file?

https://developer.apple.com/videos/wwdc/2015/?id=711 @5:55

我似乎无法将其添加到我的 info.plist 中。 没有它的价值。 我正在运行 XCode 7.0 测试版(7A121l),并在 iOS9 上进行测试。

因为我无法像视频中看到的那样具体声明我想要的 URL,所以我不断收到“App Transport Security 已阻止明文 HTTP (http://) 资源加载,因为它不安全。可以通过您的应用程序配置临时异常Info.plist 文件”错误。

但是,我似乎无法配置它。 有任何想法吗?

试试这个 --- 在 Xcode-beta 4 7.0 中为我工作

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourdomain.com</key>
        <dict>
            <!--Include to allow subdomains-->
            <key>NSIncludesSubdomains</key>
            <true/>
            <!--Include to allow HTTP requests-->
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <!--Include to specify minimum TLS version-->
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

还有一个选项,如果你想禁用 ATS,你可以使用这个:

<key>NSAppTransportSecurity</key>  
 <dict>  
      <key>NSAllowsArbitraryLoads</key><true/>  
 </dict>

但这根本不推荐。 服务器应该有 SSL 证书,这样就不会泄露隐私。

您必须在 info.plist 文件的 NSAppTransportSecurity 字典中将 NSAllowsArbitraryLoads 键添加到 YES 。

例如,

 <key>NSAppTransportSecurity</key>
 <dict>
      <key>NSAllowsArbitraryLoads</key>
     <true/>
 </dict>

在此处输入图片说明

这对我不起作用,但这确实有效:

<key>NSAppTransportSecurity</key>  
     <dict>  
          <key>NSAllowsArbitraryLoads</key><true/>  
     </dict>  

只是为了澄清......您应该始终使用 httpS

但是您可以绕过它添加异常:

在此处输入图片说明

Xcode 8.2,iOS 10

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

更新答案(在 wwdc 2016 之后):

IOS apps will require secure HTTPS connections by the end of 2016

应用传输安全(ATS)是 Apple 在 iOS 9 中引入的一项功能。启用 ATS 后,它会强制应用通过 HTTPS 连接而不是非安全 HTTP 连接到 Web 服务。

但是,开发人员仍然可以关闭 ATS 并允许他们的应用程序通过 HTTP 连接发送数据,如上述答案中所述。 2016 年底,Apple 将强制要求所有希望将其应用程序提交到 App Store 的开发者使用ATS 关联

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>com</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>net</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>org</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

这将允许连接到 .com .net .org

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>uservoice.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>

详细解释一下 ParaSara 的回答:App Transport security成为强制性的,尝试关闭它可能会导致您的应用程序被拒绝。

作为开发人员,如果您的网络代码无法使用 App Transport 安全性,并且您希望在修复任何问题之前继续其他开发,您可以关闭它。 假设在一个五人团队中,四人可以继续做其他事情,而一个人可以解决所有问题。 如果您遇到网络问题并且想要检查它们是否由应用传输安全引起,您还可以将应用传输安全作为调试工具关闭。 一旦你知道你应该立即重新打开它。

以后必须使用的解决方案是完全不使用http,除非使用不支持https的第三方服务器。 如果您自己的服务器不支持 https,Apple 就会遇到问题。 即使使用第三方服务器,我也不会打赌 Apple 会接受它。

与服务器安全的各种检查相同。 在某些时候,Apple 只会接受合理的例外情况。

但大多数情况下,请考虑这一点:您正在危及客户的隐私。 这是我书中的一大禁忌。 不要那样做。 修复您的代码,不要请求许可运行不安全的代码。

对于使用 NSAppTransportSecurity 的开发人员来说,一个坏消息。

UPDATE:
[Apple will require HTTPS connections for iOS apps by the end of 2016]

https://techcrunch.com/2016/06/14/apple-will-require-https-connections-for-ios-apps-by-the-end-of-2016/

在 mac shell 命令行 中,使用以下命令:

plutil -insert NSAppTransportSecurity -xml "<array><string> hidden </string></array>" [location of your xcode project]/Info.plist 

该命令会将所有必要的值添加到您的 plist 文件中。

XCODE 8,Swift 3:您需要添加一行:**

“应用传输安全设置”

** 在 info.plist 里面的信息属性列表中。

Xcode 9.2,Swift 4,这对我有用。

<key>App Transport Security Settings</key>
<dict>
    <key>Allow Arbitrary Loads</key>
    <true/>
</dict>

使用您喜欢的任何编辑器打开项目的 info.plist 文件,然后将此代码添加到文件末尾的最后一个之前

<key>NSAppTransportSecurity</key>
<dict>
   <key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM