【问题标题】:No matter what I try, I get "App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure."无论我尝试什么,我都会收到“App Transport Security 已阻止明文 HTTP (http://) 资源加载,因为它不安全。”
【发布时间】:2016-03-19 20:05:04
【问题描述】:

我正在尝试向我的个人网站发出 alamofire GET 请求,但我还没有 ssl。我尝试将以下代码行添加到 info.plist 并且仍然没有运气:

1) 完全禁用它

<key>NSAppTransportSecurity</key>
<dict>
 <!--Include to allow all connections (DANGER)-->
  <key>NSAllowsArbitraryLoads</key>
      <true/>
</dict>

2) 允许我的个人网址

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>yourserver.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>

但我不断收到同样的错误...

2016-03-19 13:02:07.770 appName[51705:9917289] App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
[Request]: <NSMutableURLRequest: 0x7fcc92032140> { URL: http://www.myurl.com/sup?geoSearchWord=test }
[Response]: nil
[Data]: 0 bytes
[Result]: FAILURE: Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." 

【问题讨论】:

    标签: ios http ssl alamofire


    【解决方案1】:

    Swift 5.2: 您需要在 info.plist 中添加一个名为“App Transport Security Settings”的字典,并在其中添加一个名为“Allow Arbitrary Loads”的键,其值为“YES” 像这样:

    【讨论】:

    • 只是不工作,不知道原因。但是在很长一段时间内都在做同样的事情,以前工作过。
    【解决方案2】:

    第一个解决方案应该有效。确保将该代码放在您的Info.plist 中的第一个&lt;dict&gt; 标记下。还要确保您更改的 plist 是项目设置中使用的 plist Build settings -&gt; Info.plist file

    【讨论】:

    • 我的意思是我认为它在正确的位置。它是目录中唯一的 info.plist。实际上你知道吗,当我通过“构建设置”查看时,我没有看到一个显示 info.plist 的类别。但我确实将标签放在文件内的正确位置。因为我看到它在 xcode 中进行了更改。它位于信息属性列表 -> 应用程序传输安全设置 -> 允许任意加载(布尔值是)下。是否有其他我可以做的事情或者我可以运行某种测试来确保它首先读取文件?
    • 你知道吗。我敢打赌,文件 Info.plist 甚至没有被正确读取。由于备份问题,我不得不复制和粘贴很多文件。所以...我想我该如何制作一个新的 info.plist,我可以让 xcode 生成一个吗?
    • 您可以通过右键单击根文件夹和new file -&gt; resources 来创建一个新的 plist,但它将为空。您可以创建一个新项目并从那里复制它,但如果您可以将其视为属性列表,而不仅仅是 XML,则该文件可能是正确的。你应该把你的名字放在Build settings-&gt;Packaging-&gt;Info.plist File
    • 感谢为 Info.plist 添加正确的指针,因为长期以来通常初学者都会陷入困境,所以一直困扰着这个问题
    • 如果其他人来这里,我尝试了所有这些但它不起作用。我终于关闭了 VS,从设备中删除了应用程序并重新打开它并且它工作。不知道为什么,但不知何故可能 info.plist 被保留了。在 PC 上使用 VS 进行开发,通过 mac 链接到 iPhone 设备,因此在没有完全关闭并重新启动的情况下可能不会发送到 mac。
    【解决方案3】:

    您必须在 .plist 文件中的 NSAppTransportSecurity 字典下将 NSAllowsArbitraryLoads 键设置为 YES。

    【讨论】:

      【解决方案4】:

      您必须在 info plist 中添加 Allow Arbitrary loading Key 和 YES 值。

      【讨论】:

        猜你喜欢
        • 2015-12-18
        • 1970-01-01
        • 2016-01-24
        • 2016-04-17
        • 2016-11-26
        • 2015-11-30
        • 2015-12-28
        • 1970-01-01
        • 2015-12-22
        相关资源
        最近更新 更多