2015-10-05 52 views
9

我有一個工作的應用程序,從http域下載一些信息。但是在Swift 2.0和Xcode 7更新之後,我的應用程序無法連接到服務器並下載json數據,我得到了「應用程序傳輸安全性已阻止明文HTTP(http://)資源加載,因爲它是不安全的。臨時例外可以通過您的應用的Info.plist文件進行配置。「錯誤。NSAllowsArbitraryLoads不工作

我試圖把這個線在我的info.plist:

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

,但我得到了同樣的錯誤,它不工作。我總是從下載方法得到零數據。任何人都有這個相同的錯誤?謝謝!

編輯:這是從我的Info.plist文件圖片:

Info.plist file

+0

它看起來很奇怪,你有沒有嘗試清理項目,建立文件夾和派生數據? –

回答

13

我覺得很愚蠢。我在錯誤的Info.plist上添加了用於禁用ATS的按鍵。我將它添加到MyAppTests/Supporting Files/Info.plist文件中,而不是將它添加到Supporting Files/Info.plist文件中。不是Xcode中的一個錯誤,而是我腦中的一個錯誤。謝謝大家的答案!

+6

因爲同樣的問題,我也覺得很愚蠢。真的感謝! –

+2

同樣發生在我身上! – tim

+0

我感到非常愚蠢和放鬆。謝謝。 – Chucky

0

你嘗試到您的域名添加如?您應該將其添加到NSAppTransportSecurity字典中。

<key>NSExceptionDomains</key> 
     <dict> 
      <key>abcde.com</key> 
      <dict> 
       <key>NSExceptionRequiresForwardSecrecy</key> 
       <true/> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 
       <true/> 
      </dict> 
     </dict> 
+0

我試過你的代碼,但是我仍然得到相同的錯誤... –

+0

你更新了域密鑰嗎?@PabloQuemé – ridvankucuk

+0

是的,這裏是我的info.plist的圖片: –

6

您可以嘗試在終端使用

nscurl --ats-diagnostics <your-URL> 

。這可以幫助您找到允許您的應用連接到您的網址的設置。這隻適用於OSX El Capitan。檢查出蘋果technote

但是,如果您在您的info.plist文件中嘗試了NSArbitraryLoads,則此診斷工具可能不會對您有所幫助。我想你可能找到了一個錯誤。

3

我有同樣的問題,我試着加入NSExceptionMinimumTLSVersion它工作。

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionMinimumTLSVersion</key> 
    <string>TLSv1.0</string> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

我不知道爲什麼這有幫助,但是......它的確如此!我希望這對那裏的人也有幫助

1

沒有以前的解決方案爲我工作,我有NSAllowsArbitraryLoads設置爲true,但仍然HTP不會工作,環顧四周後,我注意到info.plist文件有NSExceptionDomains部分,所以我刪除它的測試和一切工作。

因此,似乎有NSExceptionDomains取消NSAllowsArbitraryLoads,希望這是有幫助的。

0

我有一個類似的問題,過了一段時間後我發現info.plist文件已損壞。我只能建議直接檢查xml,而不是xcode中的plist編輯器。

0

如果您只需要在網頁(UIWebView/WKWebView/SafariViewController)中加載http://資源,那麼以下就足夠了。

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoadsInWebContent</key> 
    <true/> 
</dict> 
2

在我來說,我需要去除,以得到「允許任意負載」的工作,因爲它下設置爲true,其它所有的關鍵字,如「允許在Web內容在任意荷載作用」或「異常域」「 App傳輸安全設置「中的Info.plist。

使用XCode 8.2.1,iOS 10.2進行測試。

0

我在使用iOS 10.3的XCode版本8.3.2(8E2002)中遇到同樣的問題。刪除「允許Web內容中的任意負載」或「異常域」之類的所有鍵後,「允許任意負載」鍵按預期工作。謝謝@dariukas。