2015-09-18 45 views
2

更新到新发布的Xcode 7版本后,我遇到了这个问题。明文HTTP被阻止

由于App Transport Security不安全,App Transport Security阻止了明文HTTP(http://)资源加载。临时例外可以通过您的应用程序的Info.plist文件进行配置。 gete由于App Transport安全策略要求使用安全连接,因此无法加载资源。

我做了一些搜索,我发现解决方案,说这些行添加到我的项目中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> 

任何帮助

+0

你为什么不设置'NSAllowsArbitraryLoads'到TRUE;?这会让你做所有的HTTP调用。 – execv

+0

我做了同样的问题仍然 –

+0

好吧,这似乎很奇怪。我只是检查它和它的工作。请告诉我们您的info.plist?为了确保,您需要将'NSAppTransportSecurity'作为字典添加到'NSAllowsArbitraryLoads'中作为布尔值,并将其设置为YES。 – execv

回答

1

提到here

应用程序传输安全性(ATS)在应用程序与其后端之间的安全 连接中实施最佳做法。 ATS防止意外披露,提供安全的默认行为,并且易于采用;它在iOS 9和OS X v10.11中默认情况下也为 。无论您是在创建新应用程序 还是更新现有应用程序,都应尽快采用ATS 。

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

可以清楚地提到你会去https协议从http,直到然后这是解决办法

而且在你的plist除了NSAllowsArbitraryLoads,从删除所有剩余的关键NSAppTransportSecurity字典

enter image description here