2016-09-18 80 views
1

我正在製作一個應用程序,基於isbn返回書評。我試圖加載Goodreads審覈窗口小部件在Web視圖,但我得到兩個錯誤:NSURL無法加載在Web視圖-9824

CFNetwork SSLHandshake failed (-9824)NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)

我曾嘗試其他幾個網址,並得到同樣的結果。

這裏是我的代碼,其中我打電話的網址:

override func viewDidLoad() { 
     super.viewDidLoad() 

     let url = NSURL (string: "https://www.goodreads.com/api/index#book.show_by_isbn"); 
     let requestObj = NSURLRequest(URL: url!); 
     webView.loadRequest(requestObj); 
} 

在info.plist中我也有例外域字典中的goodreads.com字典。我收錄在goodreads.com NSIncludesSubdomains, NSExceptionsAllowsInsecureHTTPLoads, and NSExceptionsMinimumTLSVersion(設置爲TLSv1.1)

有沒有什麼明顯的我會出錯?域名是否錯誤?


編輯:對於任何人後來讀這篇文章,我想我已經解決了它。這頁(Does App Store reject submission if NSAllowsArbitraryLoads set to YES?)非常有幫助。

如果您使用NSAllowsArbitraryLoads,App Store將會拒絕您的應用程序。然而,他們將允許NSAllowsArbitraryLoadsInWebContent

每蘋果開發者指南,

「將此鍵設置的值是從在 您的應用程序的Web視圖ATS政策得到豁免,不影響 的ATS-規定的安全要支持舊版iOS和 macOS(比iOS 10舊),您可以使用此密鑰並仍然手動配置ATS。要執行 ,請將此密鑰的值設置爲YES,並配置 NSAllowsArbitraryLoads地址。如果您將此密鑰添加到您的Info.plist 文件,則無論密鑰的值如何,ATS都將忽略NSAllowsArbitraryLoads鍵的 值。「

+0

你是否檢查過這個帖子http:// stackoverflow。com/questions/30720813/cfnetwork-sslhandshake-failed-ios-9 – Natarajan

+0

TLS 1.1太低。 – Gruntcakes

+0

我試過1.2,仍然收到相同的錯誤。 –

回答

0

嘗試在您的project.plist中添加NSAppTransportSecurity並檢查您的url請求是否正常工作。

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

enter image description here

+0

是的,我已經研究過這個選項。它正確加載的網址,但我已閱讀NSAllowsArbitraryLoads是一種不被App Store接受的黑客。我想最終把這個應用程序在商店,所以我正在尋找其他選項......感謝您的建議。 –

0

如果你想允許特定的域使用這種方式是不是讓所有

<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> 

修復很容易將下面一行添加更多的安全和它的作品。

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

我重視我的

LINK TO THE PROJECT

+0

對,在我原來的文章的最後部分我解釋說我已經在我的info.plist中輸入了這個。我有goodreads.com代替yourserver.com。儘管在我的info.plist中有這個錯誤,但我仍然遇到這些錯誤。 –

+0

@OliviaMurphy你可以上傳你的plist保管箱並分享鏈接? –

+0

這裏是問題info.plist部分的圖片:https://drive.google.com/file/d/0B813Fyr_yfVSUVhsVVlXX2hNOVU/view –

0

測試,你還必須確保應用程序沙箱中的目標>功能禁用該項目。 Xcode自動爲新生成的項目啓用它。