根据以下错误消息,我需要在info.plist中设置什么来启用HTTP模式?

传输安全性已阻止明文HTTP(HTTP://)资源因为它是不安全的。可以通过以下方式配置临时异常应用程序的Info.plist文件。

假设我的域名是example.com。


当前回答

更新Xcode 7.1,面临问题27.10.15:

Info.plist中的新值是“App Transport Security Settings”。从此,本词典应包含:

允许任意加载=是例外域(在此处插入您的http域)

其他回答

⛔️ 不要使用不良做法!

许多答案(包括公认的答案)都告诉你要让你的应用程序的网络通信完全不安全!通过将“允许任意加载”设置为“是”(或true)。这是网络请求最危险的设置!它仅用于测试和临时用途。

你可以看到这位苹果工程师在WWDC18中清楚地说了这句话,即使是针对Web内容,你也在努力让他们都这样做!


✅ 将“允许任意加载”设置为NO!!!

您必须始终使用HTTPS进行网络连接。但如果真的不能,只需在info.plist中添加一个例外

例如,如果您正在使用http://google.com如果出现错误,您必须将其更改为https://google.com(带s),因为它支持得很好。

但是,如果你不知怎么做不到,(而且你无法说服后端开发人员支持SSL),就把这个不安全的域添加到info.plist中(而不是让它适用于所有不安全的网络!)

默认情况下,iOS仅允许HTTPS API。由于HTTP不安全,您必须禁用应用程序传输安全性。有两种禁用ATS的方法:-

1.在项目info.plist中添加源代码,并在根标记中添加以下代码。

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

2.使用项目信息。

单击左侧窗格中项目上的项目,选择项目作为目标,然后选择信息选项卡。您必须按照以下结构添加字典。

更新Xcode 7.1,面临问题27.10.15:

Info.plist中的新值是“App Transport Security Settings”。从此,本词典应包含:

允许任意加载=是例外域(在此处插入您的http域)

注意:plist中的异常域应该是小写。

示例:您已在“设置”->“共享”下将计算机命名为“MyAwesomeMacbook”;您的服务器(出于测试目的)正在MyAwesomeMacbook.local:3000上运行,您的应用程序需要向http://MyAwesomeMacbook.local:3000/files...,您的plist需要指定“myawesomemacbook.local”作为异常域。

--

您的info.plist将包含。。。

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>myawesomemacbook.local</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSExceptionAllowsInsecureHTTPLoads</key>
      <true/>
    </dict>
  </dict>
</dict>

在Swift 5中,我们有两种方法来解决这个问题。我们需要在info.plist中添加NSAppTransportSecurity

我给出了info.plist源代码和图片以供参考

第一个是在info.plist中添加NSAppTransportSecurity->NSAllowsArbitraryLoads。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <false/>
    </dict>
</dict>
</plist>

另一种方法是在info.plist中添加NSAppTransportSecurity->NSExceptionDomains,并添加URL的域,并启用加载子域(NSIncludesSubdomains)和允许不安全HTTP加载(NSExceptionAllowsInsecureHTTPLoads)的权限

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>NSAppTransportSecurity</key>
    <dict>
      <key>NSExceptionDomains</key>
      <dict>
        <key>www.7timer.info</key>
        <dict>
          <key>NSIncludesSubdomains</key>
          <true/>
          <key>NSExceptionAllowsInsecureHTTPLoads</key>
          <true/>
        </dict>
      </dict>
    </dict>
  </dict>
</plist>