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

时间:2015-07-04 04:04:13

标签: ios objective-c xcode ios9

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

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

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

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

14 个答案:

答案 0 :(得分:118)

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

Ext.define('demo.view.product.InfoLabel', {

    extend: 'Ext.Button',

    xtype: 'infolabel',

    config: {
        iconAlign: 'left',
        cls: 'wow-info-label'
    },
    initialize: function() {

        // Do nothing stopping unnecessary event listeners being added.
    }
});

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

<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>

但是根本不建议这样做。服务器应该具有SSL证书,因此没有隐私泄露。

答案 1 :(得分:88)

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

例如,

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

enter image description here

答案 2 :(得分:44)

这对我不起作用,但这就是诀窍:

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

答案 3 :(得分:21)

只是为了澄清...... 你应该总是使用httpS

但你可以绕过它添加例外:

enter image description here

答案 4 :(得分:9)

Xcode 8.2,iOS 10

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

答案 5 :(得分:3)

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

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

App Transport Security或ATS是Apple在iOS 9中引入的一项功能。启用ATS后,它会强制应用程序通过HTTPS连接而非非安全HTTP连接到Web服务。

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

答案 6 :(得分:2)

<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

答案 7 :(得分:2)

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

答案 8 :(得分:1)

要详细解释一下ParaSara的答案:应用程序传输安全性 将成为强制性的,尝试将其关闭可能会导致您的应用被拒绝。

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

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

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

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

答案 9 :(得分:1)

使用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/

答案 10 :(得分:1)

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

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

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

答案 11 :(得分:1)

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

  

&#34;应用程序传输安全设置&#34;

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

答案 12 :(得分:1)

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

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

答案 13 :(得分:0)

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

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