【问题标题】:Cleartext HTTP blocked明文 HTTP 被阻止
【发布时间】:2015-12-15 19:46:29
【问题描述】:

更新到新发布的 Xcode 7 版本后,我遇到了这个问题。

应用传输安全已阻止明文 HTTP (http://) 资源加载,因为它不安全。可以通过应用程序的 Info.plist 文件配置临时例外。 gete 无法加载资源,因为应用传输安全策略要求使用安全连接。

我做了一些搜索,找到了将这些行添加到我项目中的 info.plist 文件的解决方案,但问题没有解决

<?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>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>com.thenewsapp.$(PRODUCT_NAME:rfc1034identifier)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>BNDL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>NSAppTransportSecurity</key>
<dict>
      <key>NSAllowsArbitraryLoads</key>
      <true/>
       <key>NSExceptionDomains</key>
       <dict>
            <key>greenarea.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
            </dict>
       </dict>
</dict>
</dict>
</plist>

任何帮助

【问题讨论】:

  • 为什么不将NSAllowsArbitraryLoads 设置为true?这样你就可以进行所有的 HTTP 调用了。
  • 我做了同样的问题仍然存在
  • 嗯,这看起来很奇怪。我刚刚检查了它及其工作。请告诉我们您的 info.plist 吗?为确保,您需要将 NSAppTransportSecurity 添加为字典,并在其中添加 NSAllowsArbitraryLoads 作为布尔值并将其设置为 YES。
  • 请检查我的问题编辑
  • 你能把NSAllowsArbitraryLoads之后的所有内容都删除在NSAppTransportSecurity 字典里,然后再试一次吗?

标签: ios iphone swift2 ios9 xcode7


【解决方案1】:

提到here

应用传输安全 (ATS) 强制执行安全的最佳实践 应用程序与其后端之间的连接。 ATS 防止意外 披露,提供安全的默认行为,并且易于采用;它 在 iOS 9 和 OS X v10.11 中也默认开启。你应该采用 ATS 尽快,无论您是否正在创建新应用程序 或更新现有的。

如果您正在开发新应用,则应仅使用 HTTPS。如果 你有一个现有的应用程序,你应该尽可能多地使用 HTTPS 现在,并创建一个迁移应用程序其余部分的计划 尽快。此外,您通过更高级别的通信 API 需要使用具有前向保密性的 TLS 1.2 版进行加密。 如果您尝试建立不符合此要求的连接, 抛出错误。如果您的应用需要向不安全的 域,您必须在应用的 Info.plist 文件中指定此域。

明确提到您将从http 使用https 协议,直到那时这是解决方法

除了 plist 中的 NSAllowsArbitraryLoads 之外,从 NSAppTransportSecurity dict

中删除所有剩余的密钥

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-24
    • 2021-01-05
    • 2016-04-17
    • 2015-12-17
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    相关资源
    最近更新 更多