2016-09-18 16 views
1

isbnに基づいて書籍のレビューを返すアプリを作っています。私は、WebビューでGoodReadsのレビューウィジェットをロードしようとしていますが、私は2つのエラー取得しています:私はいくつかの他のURLを試してみましたが、同じ結果を得るているWebビューでNSURLを読み込めません-9824

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

を。私は例外ドメイン辞書内goodreads.com辞書を持っているのInfo.plistで

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); 
} 

は、ここで私は、URLを呼び出しています私のコードです。私はgoodreads.comに含まれていますNSIncludesSubdomains, NSExceptionsAllowsInsecureHTTPLoads, and NSExceptionsMinimumTLSVersion(TLSv1.1に設定)

私は間違っていると明らかに何かがありますか?ドメインは間違っていますか?


EDIT:後でこれを読んで誰のためは、私はそれを解決したと思います。このページ(Does App Store reject submission if NSAllowsArbitraryLoads set to YES?)は非常に役に立ちました。

NSAllowsArbitraryLoadsを使用すると、App Storeはあなたのアプリを拒否します。しかし、彼らは のATS-義務付けセキュリティに影響を与えず、 のアプリのWebビューにATSポリシーの免除を得ることがYESにこのキーの値を設定し、」アップルの開発者向けのガイドラインパーNSAllowsArbitraryLoadsInWebContent

を許可しますあなたのNSURLSession接続。古いバージョンの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

はい、私はすでにこのオプションについて調査しています。それは正しくURLを読み込みますが、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にこれを入力したと説明しました。私はyourserver.comの代わりにgoodreads.comを持っています。私はまだ私のinfo.plistにこれを持っているにもかかわらず、これらのエラーが発生します。 –

+0

@OliviaMurphyあなたはdropboxのplistをアップロードしてリンクを共有できますか?ここ –

+0

が問題になっているのInfo.plistの断面の写真である:https://drive.google.com/file/d/0B813Fyr_yfVSUVhsVVlXX2hNOVU/view –

0

上でテストプロジェクトを添付しています。 Xcodeは、新しく生成されたプロジェクトに対して自動的に有効にします。

関連する問題